chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的串口中斷配置

電子工程師 ? 2018-04-06 07:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32的串口中斷配置,也是很簡單的.

首先是配置UART的GPIO口

首先是配置UART的GPIO口

/**********************************************

* Name : UART1_GPIO_Configuration

* Deion : Configures the uart1 GPIO ports.

* Input : None

* Output : None

* Return : None

**********************************************************/

void UART1_GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

// Configure USART1_Tx as alternate push-pull

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

// Configure USART1_Rx as input floating

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

然后是配置串口參數(shù)

/*******************************************************

* Name : UART1_Configuration

* Deion : Configures the uart1

* Input : None

* Output : None

* Return : None

*********************************************/

void USART_Configuration(void)

{

USART_InitTypeDef USART_InitStructure;

USART_ClockInitTypeDef USART_ClockInitStructure;

Uart1_GPIO_Configuration();

USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;

USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;

USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;

USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

/* Configure the USART1 synchronous paramters */

USART_ClockInit(USART1, &USART_ClockInitStructure);

USART_InitStructure.USART_BaudRate = 9600;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_Parity = USART_Parity_No ;

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

/* Configure USART1 basic and asynchronous paramters */

USART_Init(USART1, &USART_InitStructure);

/* Enable USART1 Receive interrupts */

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

/* Enable USART1 */

USART_Cmd(USART1, ENABLE);

}

然后是在中斷設置,需要修改stm32f10x_it.c 中的串口中斷函數(shù) 并且需要修改void NVIC_Configuration(void)函數(shù)

修改NVIC_Configuration函數(shù)

/***********************************************************

* Name : NVIC_Configuration

* Deion : Configures NVIC and Vector Table base location.

* Input : None

* Output : None

* Return : None

***************************************************/

void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM

/* Set the Vector Table base location at 0x20000000 */

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

#else /* VECT_TAB_FLASH */

/* Set the Vector Table base location at 0x08000000 */

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

#endif

/* Configure the NVIC Preemption Priority Bits */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

/* Enable the USART1 Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

//串口中斷

void USART1_IRQHandler(void)

{

//處理接收到的數(shù)據(jù)

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

/* Clear the USART1 Receive interrupt */

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

}

//發(fā)送中斷

if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET)

{

USART_SendData(USART1, Send_Data[Send_Length++]);

if (Send_Length==SEND_LENGTH)

{

//發(fā)送字節(jié)結(jié)束

USART_ClearITPendingBit(USART1,USART_IT_TXE);

USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

USART_ITConfig(USART1, USART_IT_TC, ENABLE);

}

}

//發(fā)送完成

if (USART_GetITStatus(USART1, USART_IT_TC) != RESET)

{

USART_ClearITPendingBit(USART1,USART_IT_TC);

USART_ITConfig(USART1, USART_IT_TC, DISABLE);

}

}

在需要發(fā)送的程序里Send_Data[SEND_LENGTH]和發(fā)送長度設置好,

void Send_to_PC(void)

{

//設置好Send_Data[SEND_LENGTH]數(shù)組

//打開發(fā)送中斷

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

}

至此 串口就可以工作起來了!~

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2305

    文章

    11121

    瀏覽量

    371163
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    串口空閑中斷串口超時中斷介紹

    1. 空閑中斷(Idle Interrupt) 觸發(fā)條件 當串口總線在接收數(shù)據(jù)后持續(xù)保持空閑狀態(tài)(如高電平)超過一幀時間(即一個字符傳輸時間)時觸發(fā)。 硬件自動檢測總線空閑狀態(tài),與數(shù)據(jù)長度無關
    發(fā)表于 11-21 08:31

    串口中斷觸發(fā)卡死怎么解決?

    當用下列代碼運行時,串口中斷可以正常觸發(fā),回環(huán)數(shù)據(jù)接受正常。 #define UART_BAUDRATE 115200static void uart_pinmux_init(void
    發(fā)表于 11-11 06:17

    E203串口中斷使用總結(jié)

    一、串口中斷參數(shù)設置 與STM32串口中斷不同,E203的串口中斷標志位是自動清零的,也就是說,只要進入了串口中斷服務函數(shù)并且執(zhí)行完
    發(fā)表于 10-22 07:34

    使用串口485線程,發(fā)現(xiàn)收到數(shù)據(jù)回調(diào)函數(shù)一直沒有運行是怎么回事?

    ,引腳PB6和PB7,串口配置沒有問題,開機可以正常打印,如下圖。 發(fā)送485指令,通過打印和debug發(fā)現(xiàn)信號量一直為-2,且收到數(shù)據(jù)會自動進入串口中斷函數(shù),不會進入我寫的線程中接收。 我這邊硬件上有485自動引腳切
    發(fā)表于 09-18 06:03

    求助,關于stm32H7多DMA數(shù)據(jù)流問題求解

    情況如下:stm32H7配置了一個adc進行采樣,通過dma進行數(shù)據(jù)傳輸,串口接收和發(fā)送命令,用兩個dma數(shù)據(jù)流通道,采用的空閑中斷。 問題:adc一直在
    發(fā)表于 07-29 15:02

    STM32L431偶發(fā)串口亂碼的原因?怎么解決?

    項目現(xiàn)場發(fā)現(xiàn)有些設備有時下發(fā)數(shù)據(jù)沒反應,該設備由STM32L431外接模塊來接收網(wǎng)絡數(shù)據(jù)。經(jīng)過排查,發(fā)現(xiàn)亂碼發(fā)生時,外接設備發(fā)出的數(shù)據(jù)無亂碼,STM32L431的對應該外接設備的串口中斷服務程序
    發(fā)表于 06-19 06:46

    STM32CubeMX配置STM32G070RBT6TR時為什么無法使能PVD中斷?

    STM32CubeMX 配置STM32G070RBT6TR時無法使能PVD中斷
    發(fā)表于 06-18 07:59

    stm32N657配置USART2,可以發(fā)送,但是為什么無法進入接收中斷呢?

    串口2,中斷配置了,編寫接收回調(diào)函數(shù),無法進入,但是可以正常發(fā)送。請問大家能不能幫我看看代碼???找了一天沒找到問題。
    發(fā)表于 06-18 07:13

    STM32串口下載軟件(FLYMCU)

    STM32串口下載軟件(FLYMCU),經(jīng)典版本,親試可用。
    發(fā)表于 04-09 15:59 ?5次下載

    STM32F427串口接收和發(fā)送中斷同時使能,為什么會出現(xiàn)接收中斷丟數(shù)的情況?

    STM32F427芯片,針對UART7開啟串口接收緩存區(qū)非空中斷RXNE和串口傳輸完成中斷TC. 1.單測試收發(fā)都沒有任何問題。 2.將
    發(fā)表于 03-11 07:05

    STM32F103在使用HAL庫1.8.5版本使用串口中斷發(fā)送數(shù)據(jù)的時候,出現(xiàn)huart2->TxXferCount為0了,為什么?

    STM32F103在使用HAL庫1.8.5版本使用串口中斷發(fā)送數(shù)據(jù)的時候,會出現(xiàn)huart2->TxXferCount為0了,但是并沒有清除掉TXEIE中斷也沒有使能TCIE中斷
    發(fā)表于 03-07 07:12

    串口中斷是內(nèi)部中斷還是外部中斷,串口中斷是怎么觸發(fā)的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內(nèi)部,但從中斷的角度來看,串口中斷是由處理
    的頭像 發(fā)表于 01-29 15:03 ?2623次閱讀

    串口中斷需要清除標志位嗎,串口中斷標志位會自動清除嗎

    在電子通信領域,串口中斷作為一種重要的通信機制,廣泛應用于各種嵌入式系統(tǒng)和計算機設備中。串口中斷標志位的管理,尤其是是否需要手動清除以及是否會自動清除,是理解和實現(xiàn)串口通信的關鍵環(huán)節(jié)。
    的頭像 發(fā)表于 01-29 14:59 ?2931次閱讀

    串口中斷有什么用,串口中斷的觸發(fā)條件是什么

    在現(xiàn)代電子通信系統(tǒng)中,串口中斷作為一種高效的數(shù)據(jù)處理機制,扮演著至關重要的角色。它允許處理器在數(shù)據(jù)到達或發(fā)送完成時立即響應,從而提高系統(tǒng)的響應速度和效率。
    的頭像 發(fā)表于 01-29 14:56 ?2895次閱讀

    STM32串口接受中斷使用C++STL中的queue導致所有中斷失效

    ,F(xiàn)reeRTOS的heap設置為8k 有兩個中斷,1s觸發(fā)的定時器中斷串口接收中斷 遇到問題 串口發(fā)送是沒有問題的,如果不是使用STL的
    發(fā)表于 01-24 10:21