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

STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault

這篇具有很好參考價值的文章主要介紹了STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

STM32 移植 FreeRTOS 后調(diào)用 vTaskStartScheduler() 后出現(xiàn) HardFault 異常。

原因分析:

FreeRTOS 配置頭文件 FreeRTOSConfig.h 中與中斷有關的配置和通過系統(tǒng)接口 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) 設置的中斷分組沖突。

/* The lowest interrupt priority that can be used in a call to a "set priority"
function. */
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   15

/* The highest interrupt priority that can be used by any interrupt service
routine that makes calls to interrupt safe FreeRTOS API functions.  DO NOT CALL
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5

/* Interrupt priorities used by the kernel port layer itself.  These are generic
to all Cortex-M ports, and do not rely on any particular library functions. */
#define configKERNEL_INTERRUPT_PRIORITY 		( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 	( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

FreeRTOSConfig.h 中設置的中斷最低優(yōu)先級為 15,說明 可編程中斷優(yōu)先級的范圍為 0 ~ 15,也即需要 4 bits 來表示搶占優(yōu)先級。而通過 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0) API 設置為 0 bit 用于搶占優(yōu)先級,3 bits 用于子優(yōu)先級,與 FreeRTOSConfig.h 中的中斷設置沖突導致。

/** @defgroup Preemption_Priority_Group 
  * @{
  */

#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority
                                                            4 bits for subpriority */
#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /*!< 1 bits for pre-emption priority
                                                            3 bits for subpriority */
#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /*!< 2 bits for pre-emption priority
                                                            2 bits for subpriority */
#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /*!< 3 bits for pre-emption priority
                                                            1 bits for subpriority */
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /*!< 4 bits for pre-emption priority
                                                            0 bits for subpriority */

解決方案:

將中斷分組設置為 NVIC_PriorityGroup_4 即可。FreeRTOS 官方文檔 也建議對于 STM32 (Cortex-M3),建議設置為 NVIC_PriorityGroup_4

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault,STM32,stm32,嵌入式硬件,單片機,經(jīng)驗分享,mcu


題外:

這里順便也記錄下 STM32 (Cortex-M3) 結合 FreeRTOS 對中斷的設置。

STM32 (Cortex-M3)SCB_AIRCR 寄存器中的 Bits 10:9 設置中斷優(yōu)先級分組。

STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault,STM32,stm32,嵌入式硬件,單片機,經(jīng)驗分享,mcu

STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault,STM32,stm32,嵌入式硬件,單片機,經(jīng)驗分享,mcu

FreeRTOS 在配置文件 FreeRTOSConfig.h 中通過宏 configKERNEL_INTERRUPT_PRIORITYconfigMAX_SYSCALL_INTERRUPT_PRIORITY 來設置 FreeRTOS 中的中斷設置。

  • configKERNEL_INTERRUPT_PRIORITY 用于設置中斷最低優(yōu)先級。這個宏必須結合 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) 來設置。
  • configMAX_SYSCALL_INTERRUPT_PRIORITY 用于 FreeRTOS 中的一些中斷功能。典型應用就是 FreeRTOS 中以 FromISR 結尾的 API 可以安全的在 configMAX_SYSCALL_INTERRUPT_PRIORITY ~ configKERNEL_INTERRUPT_PRIORITY 之間的中斷回調(diào)中使用。對于這部分描述,可以參考下圖或者 FreeRTOS 官方文檔中對 FreeRTOSConfig.h 中宏的說明。

STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault,STM32,stm32,嵌入式硬件,單片機,經(jīng)驗分享,mcu文章來源地址http://www.zghlxwxcb.cn/news/detail-816275.html

到了這里,關于STM32-調(diào)用 vTaskStartScheduler API 后出現(xiàn) HardFault的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 前端調(diào)用DRI后端API出現(xiàn)跨域資源共享(CORS)問題解決辦法

    目錄 1. 引言 2. 跨源資源共享和實現(xiàn)方法 3. 在Django項目中配置django-cors-headers庫 Reference 在進行后端API開發(fā)時,有時會遇到“跨域資源共享 (CORS) 請求...被阻止“的錯誤,如圖1所示。本文講解如何在使用DRF(Django REST Framework)的后端API開發(fā)項目中解決這個問題。 A cross-origin re

    2024年04月25日
    瀏覽(23)
  • Vue調(diào)用后端api接口出現(xiàn)跨域問題,只要三步解決問題

    Vue調(diào)用后端api接口出現(xiàn)跨域問題,只要三步解決問題

    問題: 當我們在自己的個人電腦上去進行vue調(diào)用后端的操作時,經(jīng)常會遇到跨域問題 解決方式: 1.在Vue項目中調(diào)用api接口的地方加上 2.在后端代碼項目重寫Filter類 3. 在控制類方法上加上允許跨域的注解 搞定收工: ?

    2024年02月15日
    瀏覽(17)
  • 【STM32】STM32F4調(diào)用DSP庫實現(xiàn)FFT運算

    【STM32】STM32F4調(diào)用DSP庫實現(xiàn)FFT運算

    最近在整理之前的stm32筆記,打算把一些有價值的筆記發(fā)到CSDN分享一下。 在進行模擬/數(shù)字信號的轉(zhuǎn)換過程中,當采樣頻率F大于信號中最高頻率 fmax 的 2 倍時(F2*fmax),采樣之后的數(shù)字信號完整地保留了原始信號中的信息。 設采樣頻率(單位時間可以采多少個信號樣本)為 F

    2023年04月24日
    瀏覽(58)
  • STM32調(diào)用DSP函數(shù)方法

    STM32調(diào)用DSP函數(shù)方法

    ..DriversCMSISDSPIncludearm_math.h(341): error: ?#35: #error directive: \\\"Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML\\\" ? ? #error \\\"Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_M

    2024年02月12日
    瀏覽(23)
  • 【STM32】STM32學習筆記-GPIO相關API概述(06-1)

    【STM32】STM32學習筆記-GPIO相關API概述(06-1)

    文件: stm32f10x_gpio.h和stm32f10x_gpio.c 參考實現(xiàn) 參考: 【STM32】江科大STM32學習筆記匯總

    2024年04月29日
    瀏覽(16)
  • STM32芯片連接電腦出現(xiàn)的問題與解決方法

    我用的是正點原子STM32F1系列芯片,在用FLYMCU燒錄程序時出現(xiàn)不少問題,下面是我列舉的問題和解決方法。 1.FLYMCU參數(shù)設置 ①DTR低電平復位,RTS高電平進BootLoader ②勾選:校驗、編程后執(zhí)行、編程后重裝文件 ③波特率:F1系列芯片可設置為115200 2.FLYMCU連接不上芯片,顯示連接超

    2024年04月23日
    瀏覽(26)
  • STM32 出現(xiàn)SWD/JTAG Communication Failure

    STM32 出現(xiàn)SWD/JTAG Communication Failure

    本來想做13屆國賽題,結果遇到了第一次碰到的問題,從昨天晚上到現(xiàn)在,問了客服,找人幫忙,,,最后終于解決了,雖然問題不難,但是剛開始學遇到這種問題還是挺要命的。 出現(xiàn)SWD/JTAG Communication Failure這個問題的原因就是你板子的SW被復用了,SW被復用的原因就是你配置

    2024年02月12日
    瀏覽(13)
  • STM32調(diào)試特定函數(shù)出現(xiàn)Cannot access Memory

    超出數(shù)組索引 指針訪問越界 對空指針進行操作 都容易出現(xiàn)這個問題 如果是函數(shù)沒有跑, 就出現(xiàn)Cannot access Memory 搜索到的結果大多是這種回復 可以參考一下

    2024年02月16日
    瀏覽(19)
  • 微信開發(fā)者工具出現(xiàn)警告:請注意游客模式下,調(diào)用 wx.operateWXData 是受限的, API 的返回是工具的模擬返回。

    微信開發(fā)者工具出現(xiàn)警告:請注意游客模式下,調(diào)用 wx.operateWXData 是受限的, API 的返回是工具的模擬返回。

    問題出現(xiàn)背景: 第一次使用微信開發(fā)者工具時候控制臺出現(xiàn)的警告。 原因: 微信開發(fā)者工具中創(chuàng)建項目時默認的AppID是參考示例,需要關聯(lián)我們自己\\\"微信小程序\\\"的AppID。 解決方法: 登錄\\\"微信公眾平臺\\\"——選擇\\\"小程序\\\"——找到開發(fā)下面的開發(fā)管理——開發(fā)設置——開發(fā)者

    2024年02月12日
    瀏覽(28)
  • STM32 keil燒錄出現(xiàn)program algorithm出錯問題

    STM32 keil燒錄出現(xiàn)program algorithm出錯問題

    近期使用工程代碼進行燒錄的時候出現(xiàn)program algorithm問題, Cannot Load Flash Programming Algorithm 針對此問題的解決方案做個記錄。 情景復現(xiàn): 這里報錯我們看到是 No Algorithm found for:08000000H - 08006647H 嘗試解決: 這里初始燒錄算法是沒有的,需要我們進行手動添加,我使用的板子是

    2024年02月08日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包