微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32的V3.5库Systick优先级设置的问题

STM32的V3.5库Systick优先级设置的问题

时间:11-20 来源:互联网 点击:
以前的旧版本的库通过如下函数来设置Systick的优先级。但新的V3.5的库不含该函数,查询良久才得到答案,发现网上那个不少是错误的,误人子弟。
NVIC_SystemHandlerPriorityConfig(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(中)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top