国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32用FreeRTOS串口中斷接收卡死問題

這篇具有很好參考價值的文章主要介紹了STM32用FreeRTOS串口中斷接收卡死問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

現(xiàn)在意法半導(dǎo)體的配套軟件做得很全面了,簡直可以說是保姆式的服務(wù)。從芯片選型,引腳定義,到代碼模板生成,一條龍服務(wù),很方便。但是方便也有方便的壞處,那就是有些細(xì)節(jié)的規(guī)則會造成天然的bug。
比如,在stm32cubeIDE里新建工程的時候,如果勾選了FREERTOS
freertos 串口中斷,stm32,單片機(jī),嵌入式硬件
那么,程序后臺會默認(rèn)把RTOS可控的優(yōu)先級范圍設(shè)定成5-15(目前還看不見,生成后在FreeRTOSConfig.h中可以查到):
freertos 串口中斷,stm32,單片機(jī),嵌入式硬件
接下來繼續(xù)配置串口。

freertos 串口中斷,stm32,單片機(jī),嵌入式硬件
可以看到,串口中斷的優(yōu)先級已經(jīng)被鎖定成5,且不可更改。
實(shí)際上這樣暫時還沒有什么問題,生成代碼后,做基本的串口收發(fā)一時半會兒也看不出有什么問題。
但是,一旦讓程序多跑跑,就會發(fā)現(xiàn),串口中斷早晚會卡死,而其他程序還可以正常跑。

這是為什么呢?

在串口中斷接收的函數(shù)中,有LOCK這樣的功能。如果在LOCK期間程序被打斷,那么就再也不能解鎖,導(dǎo)致卡死。

freertos 串口中斷,stm32,單片機(jī),嵌入式硬件
而由于串口中斷的優(yōu)先級被默認(rèn)限制成了5,RTOS就有了打斷的可能。
所以一切問題的根源是stm32cubeIDE。
要解決這個問題也很簡單,去stm32f1xx_hal_msp.c修改一下串口中斷的優(yōu)先級就好了。

freertos 串口中斷,stm32,單片機(jī),嵌入式硬件
默認(rèn)是5,只要把優(yōu)先級修改到0-4之間即可。這個范圍內(nèi)RTOS是不會管理的,也就是不會打斷。

用到這個函數(shù)說明如下:

/**
  * @brief  Sets the priority of an interrupt.
  * @param  IRQn: External interrupt number.
  *         This parameter can be an enumerator of IRQn_Type enumeration
  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xx.h))
  * @param  PreemptPriority: The preemption priority for the IRQn channel.
  *         This parameter can be a value between 0 and 15
  *         A lower priority value indicates a higher priority 
  * @param  SubPriority: the subpriority level for the IRQ channel.
  *         This parameter can be a value between 0 and 15
  *         A lower priority value indicates a higher priority.          
  * @retval None
  */
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
{ 
  uint32_t prioritygroup = 0x00U;
  
  /* Check the parameters */
  assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
  assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
  
  prioritygroup = NVIC_GetPriorityGrouping();
  
  NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
}

關(guān)鍵是這句注釋:

  •    This parameter can be a value between 0 and 15 A lower priority value indicates a higher priority 
    

所以,保姆雖然事無巨細(xì),但還是無法做到面面俱到呀。文章來源地址http://www.zghlxwxcb.cn/news/detail-606252.html

到了這里,關(guān)于STM32用FreeRTOS串口中斷接收卡死問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • stm32 freertos多任務(wù)狀態(tài)遷移,中斷臨界段,任務(wù)延時

    stm32 freertos多任務(wù)狀態(tài)遷移,中斷臨界段,任務(wù)延時

    arm中SP,LR,PC寄存器以及其它所有寄存器以及處理器運(yùn)行模式介紹 特權(quán)級與用戶級的區(qū)別主要是某些寄存器能不能訪問與修改: cortex M3/M4內(nèi)核 特權(quán)級與用戶級詳解 Cortex-M3雙堆棧MSP和PSP Cortex-M3雙堆棧MSP和PSP M3內(nèi)核何時使用MSP何時使用PSP? 特權(quán)級可以使用MSP 和PSP指針 用戶級

    2024年02月12日
    瀏覽(85)
  • STM32 CubeMX (第三步Freertos中斷管理和軟件定時)

    STM32 CubeMX (第三步Freertos中斷管理和軟件定時)

    學(xué)習(xí)使用Freertos第三步 在 FreeRTOS 中,中斷管理和軟件定時: · taskENTER_CRITICAL() ·; 是一個函數(shù)在 FreeRTOS 中使用的,用于進(jìn)入臨界區(qū)(critical section)。在臨界區(qū)內(nèi),中斷會被禁用,這樣可以確保在多任務(wù)環(huán)境下共享資源的安全性。你可以在需要保護(hù)共享資源的代碼段中使用 ·

    2024年02月12日
    瀏覽(41)
  • HC06藍(lán)牙2.0模塊連接不穩(wěn)定 和 STM32串口不傳輸數(shù)據(jù)(串口接收中斷)的一些問題

    最近,在一個項(xiàng)目中使用到藍(lán)牙,但是調(diào)試過程出現(xiàn)了很多問題。 剛開始使用的是HC06藍(lán)牙,剛開始使用較為正常,可以實(shí)現(xiàn)藍(lán)牙模塊和電腦設(shè)備直接連接,而且數(shù)據(jù)接收正常。 在接下來的設(shè)計中,考慮到適配問題,就設(shè)計了配套的藍(lán)牙接收模塊,同樣是HC06貼片模塊。但問題

    2024年02月14日
    瀏覽(26)
  • 【踩坑日記】STM32 USART 串口與 FreeRTOS 沖突

    【踩坑日記】STM32 USART 串口與 FreeRTOS 沖突

    筆者使用 FreeRTOS 創(chuàng)建了兩個任務(wù),使兩顆 LED 以不同頻率閃爍,但是在加入串口 USART 部分代碼后, LED 不能正常工作了。 硬件:STM32F103C8T6、ST-Link 軟件:KEIL5 代碼來源:野火 FreeRTOS 例程 說明,野火的教程并不適用于 F103C8,筆者對其進(jìn)行了移植,一定程度上是因?yàn)橐浦渤霈F(xiàn)了

    2024年02月11日
    瀏覽(15)
  • 基于STM32CubeMx配置FreeRtos以及USB虛擬串口步驟詳解

    基于STM32CubeMx配置FreeRtos以及USB虛擬串口步驟詳解

    ? ?Debug:推薦選擇 Serial Wire (方便使用STLink打斷點(diǎn)在線調(diào)試) 中間兩項(xiàng)默認(rèn)Disable就好 TimeBase Source:若需要配置FreeRtos則不能選擇SysTick,隨機(jī)選擇一個TIM定時器即可,這里我選擇TIM1定時器。 (解釋:裸機(jī)的時鐘源默認(rèn)是SysTick,但是開啟FreeRtos后,F(xiàn)reeRtos會占用SysTick,用于任

    2024年02月05日
    瀏覽(28)
  • FreeRTOS中斷調(diào)用API消息隊(duì)列發(fā)送函數(shù)導(dǎo)致系統(tǒng)死機(jī)(memcpy函數(shù)卡死)

    背景:寫一組在FreeRTOS系統(tǒng)下的串口驅(qū)動 ,芯片使用的是杰發(fā)科的 AC781x系列 , ARM? CortexM3 內(nèi)核,96MHz主頻。 項(xiàng)目場景:計劃使用dma接收數(shù)據(jù),設(shè)置dma半滿中斷與全滿中斷,在半滿中斷中把前半部分?jǐn)?shù)據(jù)傳入消息隊(duì)列,在全滿中斷中把后半部分?jǐn)?shù)據(jù)傳入消息隊(duì)列。 問題1: 在中

    2024年02月15日
    瀏覽(17)
  • STM32_串口中斷接收數(shù)據(jù)_空閑中斷

    引言: 1、串口中斷接收數(shù)據(jù)首先要保證完整性(設(shè)置串口中斷優(yōu)先級) 2、串口中斷接收數(shù)據(jù)要保證實(shí)時性(打開串口空閑中斷——空閑時間是2個字節(jié)的時間) 3、串口中斷接收+DMA緩存,等到需要處理時候在進(jìn)行處理數(shù)據(jù) 方法一:直接利用stm32的RXNE和IDLE中斷進(jìn)行接收不定字

    2024年02月13日
    瀏覽(19)
  • STM32(HAL)串口中斷接收

    STM32(HAL)串口中斷接收

    目錄 1、簡介 2?基礎(chǔ)配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2?串口外設(shè)配置 ?2.3 項(xiàng)目生成 ?3、KEIL端程序整合 本文對HAL串口中斷函數(shù)進(jìn)行介紹。 2.1.1 SYS配置 ?2.1.2 RCC配置 首先在main.c文件中進(jìn)行接受變量聲明。 ?接著在主函數(shù)的while循環(huán)中進(jìn)行接收中斷,如下所示: ?最后在主函數(shù)

    2024年02月14日
    瀏覽(38)
  • STM32 hal庫使用筆記之FreeRTOS—任務(wù)創(chuàng)建、刪除,任務(wù)掛起、恢復(fù),任務(wù)中斷管理

    STM32 hal庫使用筆記之FreeRTOS—任務(wù)創(chuàng)建、刪除,任務(wù)掛起、恢復(fù),任務(wù)中斷管理

    一、簡介 1.FreeRTOS簡介 ? ? RTOS全稱為:Real Time OS,就是實(shí)時操作系統(tǒng),強(qiáng)調(diào)的是:實(shí)時性。而Free顯而易見體現(xiàn)的是其免費(fèi)性??偟膩碚f這是一個免費(fèi)的嵌入式實(shí)時操作系統(tǒng)。 ? ? 其特點(diǎn)是:免費(fèi)開源、可剪裁(獨(dú)立性強(qiáng),適應(yīng)范圍廣)、簡單、優(yōu)先級/任務(wù)不限(但是受到不

    2024年02月04日
    瀏覽(22)
  • 1902_野火FreeRTOS教程內(nèi)核在STM32中用到的2個中斷PENDSV和SYSTICK

    1902_野火FreeRTOS教程內(nèi)核在STM32中用到的2個中斷PENDSV和SYSTICK

    全部學(xué)習(xí)匯總:? g_FreeRTOS:?FreeRTOS學(xué)習(xí)筆記?(gitee.com) 上面是涉及到的源代碼,而這次需要分析的就是78、79行的兩個中斷。首先,需要確認(rèn)NVIC_SYSPRI2寄存器的作用。 進(jìn)一步看里面相關(guān)的定義,從這里看這個注釋與代碼出現(xiàn)了不一致的地方。也就是這個 0xe000ed20地址究竟是哪一

    2024年02月21日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包