stm32 freertos 之串口中斷

2020-12-25 電子工程世界網

一、中斷處理函數


void USART1_IRQHandler(void)

{

BaseType_t xHigherPriorityTaskWoken;

   xHigherPriorityTaskWoken = pdFALSE;

u8 cChar;

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

{

cChar=USART_ReceiveData(USART1);

xQueueSendToBackFromISR (xQueueRx,&cChar,&xHigherPriorityTaskWoken);

portYIELD_FROM_ISR(xHigherPriorityTaskWoken);

}

}

二、中斷向量表配置


void NVIC_Configuration(void)

{

NVIC_InitTypeDef  NVIC_InitStructure;

NVIC_PriorityGroupConfig (NVIC_PriorityGroup_4);

NVIC_InitStructure .NVIC_IRQChannel =USART1_IRQn  ;

NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority =6;

NVIC_InitStructure .NVIC_IRQChannelCmd =ENABLE ;

NVIC_Init(&NVIC_InitStructure );

 

}

三、串口接收任務創建


xQueueHandle xQueueRx;

void vPC_Communication_Task(void *pvParameters)

{

BaseType_t xHigherPriorityTaskWoken;

xHigherPriorityTaskWoken = pdFALSE;

u8 rx=0;

xQueueRx=xQueueCreate(20,sizeof(u8));

while(1)

{

if(xQueueReceiveFromISR(xQueueRx,&rx,&xHigherPriorityTaskWoken))

{

printf("%crn",rx);

}

vTaskDelay(1000/portTICK_RATE_MS );

}

 

}

四、主函數


int main(void)

{

    BSP_INIT();

 

    xTaskCreate(vLED_Task ,"led_task",50,NULL,1,NULL);

    xTaskCreate(vPC_Communication_Task,"vPC_Communication_Task",500,NULL,2,NULL);

    vTaskStartScheduler();

}


關鍵字:stm32  freertos  串口中斷 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/ic476355.html

推薦閱讀

STM32項目(三)——通用LIN控制器

需求:LIN馬達控制器:AFS(DHL+AFL)——彎道輔助照明系統DHL:上極限,下極限,零位,馬達老化循環;AFL:左極限,右極限,零位,馬達老化循環;所有參數可配置:上極限,下極限,零位,左極限,右極限,馬達循環上極限,馬達循環下極限,馬達循環次數,馬達循環等待時間;保存至少30款產品的配置,配置界面需要有添加,讀取,查找,刪除功能。方案:STM32 + LIN + 串口(使用NXP的串口屏,TJA系列的LIN晶片)STM32的LIN接口作為主節點,馬達作為從節點。系統設計:RTX多任務設計,串口處理任務,顯示屏處理任務,LIN發送任務;(1)、串口處理任務:點擊串口屏會獲取到點擊的坐標值,串口中斷接受到數據加入到隊列;任務

發表於 2020-12-09

STM32項目(二) —— 車燈測試臺架

需求:(1)、點燈控制器:在線節拍,離線節拍;(2)、PWM控制盒:在線PWM,離線PWM;(3)、電流測試模塊:檢測車燈電流校準係數;方案:點燈控制器:STM32 + CAN + GPIO節拍:比如亮多長時間,滅多長時間;大節拍中嵌套多個小節拍,每個燈對應相同或者不同的節拍。上位機下發控制指令,表明此時是在線還是離線。(離線跑的節拍是在在線模式下下載的)在線模式:如果是直接輸出,按照指定格式下發CAN消息,MCU接受消息並解析,切繼電器點燈;如果是存儲節拍,MCU內部Flash存儲上位機通過CAN下發的點燈節拍。離線模式:從內部Flash中讀取節拍,並控制繼電器點燈;模式切換按鈕:不僅可以通過上位機控制在線/離線模式,還可

發表於 2020-12-09

STM32項目(一) —— 展示車座椅

功能:模擬人開車時,ACR和ABL的變化。 主控制器:STM32(CAN,串口,網口,輸入,輸出)上位機:LibView ACR:卷收器(座椅上面的安全帶)ABL:電機(座椅右下角接安全帶的插孔)PUMA:控制器發送CAN給PUMA,PUMA控制ACR和ABL(DBC文件的解析);ACR通過CAN控制,ABL通過PWM控制電機。 STM32硬體接口:按鍵盒8路輸入,網口與工控機軟體通信,CAN1直接控制ACR,CAN2給PUMA信號控制ACR,串口與上位機軟體通信(控制方向盤震動)。 主要有兩塊功能:靜態模式和遊戲模式。 靜態模式:UC-WinRoad沒工作時,STM32檢測

發表於 2020-12-09

STM32——GPIO(2)

, GPIO_InitTypeDef* GPIO_InitStruct){  uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;  uint32_t tmpreg = 0x00, pinmask = 0x00;  /* 斷言,用於檢查輸入的參數是否正確 */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));  assert

發表於 2020-12-09

Octonion全新AI工業狀態監測擴展軟體包可在STM32 MCU完美運行

專業開發工業設備診斷邊緣人工智慧(AI)的深度技術軟體公司Octonion 發布了一個STM32Cube擴展軟體包。該軟體包是針對來自橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)的工業級STM32L4 +微控制器開發板的優化過的狀態監測解決方案。 Octonions的新軟體包支持意法半導體在快速增長的工業狀態監測和預測性維護市場上發起的使用STM32微控制器和微處理器開發人工智慧應用的市場活動。Octonion的I-CUBE-OCTMI 軟體包是一個運行在STM32 超低功耗MCU上的自我維護系統,系統

發表於 2020-12-09

STM32——流水燈

stm32f10x_conf.h:打開stm32f10x_gpio.h和stm32f10x_rcc.h;stm32f10x_gpio.c 和 stm32f10x_rcc.c加入工程模板中,只說重點。【stm32f10x_rcc.c用於配置系統時鐘 和外設時鐘,由於每個外設都要配置時鐘,所以它是每個外設都需要用到的庫文件。】// 新建led.h  led.c#ifndef  _LED_H_#define  _LED_H_ #include "stm32f10x.h" #define ON  0#define OFF 1 #define LED1

發表於 2020-12-08

相關焦點

  • printf()函數重定向到STM32串口輸出
    /html/1573.htmlC語言中使用printf()函數輸出是非常方便功能非常強大的,如果能將printf()函數使用到串口上,能實現非常多的強大輸出功能,極大方便我們使用串口輸出功能。()*/ #define PUTCHAR 發表於 2020-10-30 51單片機自定義函數實現任意串口的printf() 在嵌入式開發過程中,往往需要多個串口進行通訊,使用printf函數是個不錯的選擇,格式化輸出後方便實用
  • stm32通用定時器用做外部脈衝計數器的例程
    最近幾天要用到stm32對外部輸入脈衝進行計數,很自然想到定時器,可是手上資料沒有講解stm32定時器如何用作外部計數器的,在網上找例程,也沒找到幾個正確的,自己硬著頭皮仔細研究參考手冊,終於知道如何配置了,並寫了一個例程,希望將來對一些網友有用。
  • STM32實例——USART串口通信實驗(二)
    由於串口中斷類型比較多,所以使用哪種中斷,我們就需要對它進行配置。,使能串口中斷通道    在上一步我們已經使能了串口的接收中斷, 只要使用到中斷, 就必須對NVIC初始化,NVIC 初始化庫函數是 NVIC_Init(),這個在前面講解 STM32 中斷時就已經介紹過,不清楚的可以回過頭看下。
  • 容易被大多數人忽視的STM32串口DMA問題
    討論三個問題:1、什麼叫串口DMA 請求;2、串口簡要複習;3、串口DMA發送流程。說這個問題之前先簡單回顧DMA的基本特性。先導出原子哥的PPT內容:DMA 全稱Direct Memory Access,即直接存儲器訪問。
  • 談談容易被多數人忽視的STM32串口DMA問題
    討論三個問題:1、什麼叫串口DMA 請求;2、串口簡要複習;3、串口DMA發送流程。說這個問題之前先簡單回顧DMA的基本特性。先導出原子哥的PPT內容:DMA 全稱Direct Memory Access,即直接存儲器訪問。
  • STM32程序添加printf函數後無法運行的解決方法(串口實驗)
    標準庫函數的默認輸出設備是顯示器,要實現在串口或LCD輸出,必須重定義標準庫函數裡調用的與輸出設備相關的函數.例如:printf輸出到串口,需要將fputc裡面的輸出指向串口(重定向),方法如下:#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{USART_SendData
  • 【細說STM32】之八——中斷式按鍵
    1.STM32中斷概述中斷優先級在使用中斷式按鍵之前,我們先去了解一下STM32的中斷。
  • stm32的gpio模擬iic小記
    在用stm32的模擬iic讀取mpu6050時發現讀whoami寄存器為0xd1,而正確的值應該為0x68,導致這個問題基本上有以下幾個原因:    1、如果是杜邦線連接,線太長且線質量不好會導致這個問題;    2、上拉電阻不合適,上拉電阻不合適的話會導致iic兩根線上的波形不好
  • STM32與LD3320語音識別模塊串口交互,實現語音控制繼電器
    LD3320串口輸出測試測試四個口令,查看串口輸出的字符串是否符合預期。,具體原理圖如下圖所示:初始化串口4因為LD3320模塊使用的波特率為9600,所以串口4也要初始化為波特率9600,串口初始化調用的代碼如下:uart4_init(9600); USART4_RX_STA=0;  memset(USART4_RX_BUF,
  • STM32之option bytes踩坑記錄
    最近在做一個stm32項目,用的盜版jlink調試,突然某次下完程序,stm32竟然開始無限重啟了,量了一下復位腳,發現有周期性的重啟脈衝輸出,一開始我以為是硬體壞了,重新焊了一套硬體,發現新焊的是好的,但是原來那塊板子,檢查來檢查去感覺也不像是硬體和程序的問題。
  • STM32如何高效接收串口數據?
    DMA,直接內存存取,可以用它的雙手釋放CPU的靈魂,所以,本文通過USART3進行串口收發,接受使用DMA的方式,無需CPU進行幹預,當接受完成之後,數據可以直接從內存的緩衝區讀取,從而減少了CPU的壓力。
  • keil5.24創建uCOSIII工程實現stm32實時作業系統(環境配置)
    例如下圖,我選擇了DFP,CMSIS,編譯器,middleware,uCOSIII, freertos9(最近在看這個,就順手下了).       SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);      //上面自帶的初始化頻率是72M,這裡選擇外部時鐘  HCLK/8      然後OSInit();  創建主任務,OSStart();   2 中斷向量映射     OS需要用到2個中斷,一個是PendSV_handler
  • STM32串口通信基本原理
    經過電平轉換後,晶片串口和rs232的電平標準是不一樣的:    RS-232通訊協議標準串口的設備間通訊結構圖如下:     所以單片機串口與PC串口通信就應該遵循下面的連接方式:在單片機串口與上位機給出的rs232口之間,通過電平轉換電路(如下面圖中的Max232晶片) 實現TTL電平與RS232電平之間的轉換。
  • 【STM32】串口通信基本原理(超基礎、詳細版)
    STM32串口通信基礎STM32的串口通信接口有兩種,分別是:UART(通用異步收發器)、USART(通用同步異步收發器)。經過電平轉換後,晶片串口和rs232的電平標準是不一樣的:RS-232通訊協議標準串口的設備間通訊結構圖如下:
  • avr單片機和stm32區別與優缺點分析
    摘要:avr單片機和stm32單片機是目前使用較廣泛的單片機,那麼avr單片機和stm32單片機有什麼區別呢?有什麼優劣勢呢?   串口使用一個max232晶片。   使用跳線JMP2—1,不使用串口時,請將其斷開,防止串口電路對IO口的幹擾。
  • STM32的三種編程下載方式
    這裡記錄三種stm32的下載程序方式:1.J-Flash下載(需要用到J-link)2.MDK配置下載(需要用到J-link)3.ISP下載(串口下載,需要用到官配串口下載軟體,用過stc51的對這個都不會陌生吧)-----------------------------------------------------
  • STM32單片機的定時器和ADC的應用方法介紹
    主要的幾個函數 //tim_num=0對應 定時器2,tim_num=1對應 定時器3;tim_us:定時器uS數 void stm32_timer_start(uint16_t tim_num(TIM3, TIM_OPMode_Single);//定時器單次模式 TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //使能中斷 TIM_Cmd(TIM3, ENABLE); //使能TIMx外設 } } //停止定時器 void stm32_timer_stop(uint16
  • STM32 uCOS_II 實踐 之 外部中斷事件 及 系統運行過程
    在進行uCOSII的程序之前先來複習下,裸機平臺下stm32的外部中斷的操作。大概可以分作4個步驟:1-配置相應管腳為浮空輸入;2-配置相應管腳為外部中斷口並設定其中斷屬性及參數;3-配置NVIC相關寄存器,設定中斷優先級;4-編寫中斷服務函數。
  • 如何採用串口通信的連接方式和C語言編程實現串口通訊
    雖然近年來隨著USB口的日趨流行,RS232接口串口作為一種傳統的串口通信口有被取代的趨勢。然而由於它具有較高的性價比和傳輸的可靠性Ⅲ。在傳輸速率要求不是很高的情況下,串口通信仍然具有其自身的優勢。解決這一矛盾的有效辦法是採取中斷的通信方式,即當通信口自身準備就緒時,主動提出中斷申請,一旦CPU響應此申請,便暫停執行的工作,轉向中斷服務子程序,與外設進行數據的交換,數據交換完成後返回到主程序中的斷點繼續執行未完成的任務,這樣就避免了CPU資源的浪費㈨。 為此必須對異步通信適配器以及中斷控制器進行控制。
  • 基於STM32的Mifare IC卡讀寫卡器設計
    2 軟體設計與實現  通過STM32的SPI對MFRC522的內部寄存器進行讀寫,配置所需寄存器以達到設置晶片的目的來驅動電線部分,通過晶片的RX、TX引腳發送和接收信號對Mifare卡片進行數據傳輸,接收到的數據則存儲在RC522晶片內部FIFO中,stm32 讀取FIFO即可取出相應的數據。