STM32的V3.5库Systick优先级设置的问题
时间:11-20
来源:互联网
点击:
以前的旧版本的库通过如下函数来设置Systick的优先级。但新的V3.5的库不含该函数,查询良久才得到答案,发现网上那个不少是错误的,误人子弟。
NVIC_SystemHandlerPriorityCon fig(SystemHandler_SysTick, 0, 0);
查询结果总结如下:
1. STM32中断优先级是使用4-bit来表示的,即总共有16个级别。
2. 优先级分为2个部分:抢先优先级和子优先级,上述的4个bit可以灵活分配给抢先优先级和子优先级,比如,1个bit表示抢先优先级,则剩余3个bit表示子优先级。固件库中对应的函数是:NVIC_PriorityGroupConfig()。
3. 中断分为内核中断和芯片(STM32)中断,配置的寄存器位置是不同的,芯片中断的配置使用NVIC,内核中断(比如systick)的配置使用SCB。
4. 内核中断优先级设置使用函数:NVIC_SetPriority(),此函数需要一个表示优先级的参数,可以利用NVIC_EncodePriority()这个函数生成,比如:
NVIC_SetPriority(SysTick_IRQn,
NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0, 1));
//抢先优先级:0(最高);子优先级:1(中)
NVIC_SystemHandlerPriorityCon
查询结果总结如下:
1. STM32中断优先级是使用4-bit来表示的,即总共有16个级别。
2. 优先级分为2个部分:抢先优先级和子优先级,上述的4个bit可以灵活分配给抢先优先级和子优先级,比如,1个bit表示抢先优先级,则剩余3个bit表示子优先级。固件库中对应的函数是:NVIC_PriorityGroupConfig()。
3. 中断分为内核中断和芯片(STM32)中断,配置的寄存器位置是不同的,芯片中断的配置使用NVIC,内核中断(比如systick)的配置使用SCB。
4. 内核中断优先级设置使用函数:NVIC_SetPriority(),此函数需要一个表示优先级的参数,可以利用NVIC_EncodePriority()这个函数生成,比如:
NVIC_SetPriority(SysTick_IRQn,
NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0, 1));
//抢先优先级:0(最高);子优先级:1(中)
STM32V3 5库Systick优先级设 相关文章:
- STM32 v3.5固件库systick ms延时(12-02)
- STM32 V3.5固件库下SysTick的使用(11-27)
- stm32v3.5库的时钟配置(11-25)
- 如何使用STM32_V3.5版本固件库建立工程模板(11-17)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)