南宁较好的网站建设公司,佛山旺道seo,微信建立公众号,如何制作一个手机网站源码目录
1.系统定时器-SysTick
2.SysTick定时时间的计算
3.SysTick结构体
4.SysTick固件库函数
5.SysTick中断优先级 1.系统定时器-SysTick SysTick:24位系统定时器#xff0c;只能递减#xff0c;存在于内核嵌套在NVIC中。所有的Cortex-M中都有这个系统定时器。
重装载值…目录
1.系统定时器-SysTick
2.SysTick定时时间的计算
3.SysTick结构体
4.SysTick固件库函数
5.SysTick中断优先级 1.系统定时器-SysTick SysTick:24位系统定时器只能递减存在于内核嵌套在NVIC中。所有的Cortex-M中都有这个系统定时器。
重装载值reload递减当递减到0会触发中断并且会有置位countflag标志VAL表示当前值。然后reload继续从预设值开始递减周而复始。 2.SysTick定时时间的计算
T:一个计数循环的时间跟reload 和CLK有关CLK:72M或者9M由CTRL寄存器配置reload:24位用户自己配置
T relaod * (1/CLK)
CLK 72MHZ. 1us (72) * (1 / 72 000 000)
CLK 72MHZ. 1ms (72 000) * (1 / 72 000 000)
时间单位换算1s 1000ms 1000 000us 1000 000 000ns
3.SysTick结构体
typedef struct
{__IO uint32_t CTRL; /*! Offset: 0x00 SysTick Control and Status Register */__IO uint32_t LOAD; /*! Offset: 0x04 SysTick Reload Value Register */__IO uint32_t VAL; /*! Offset: 0x08 SysTick Current Value Register */__I uint32_t CALIB; /*! Offset: 0x0C SysTick Calibration Register */
} SysTick_Type;4.SysTick固件库函数
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{ if (ticks SysTick_LOAD_RELOAD_Msk) return (1);//判断reload的值是否大于最大值2^24 SysTick-LOAD (ticks SysTick_LOAD_RELOAD_Msk) - 1;//配置reload寄存器的初值 NVIC_SetPriority (SysTick_IRQn, (1__NVIC_PRIO_BITS) - 1); //配置中断优先级SysTick-VAL 0; //配置count的值 SysTick-CTRL SysTick_CTRL_CLKSOURCE_Msk | //配置system时钟为72MSysTick_CTRL_TICKINT_Msk | //使能中断SysTick_CTRL_ENABLE_Msk; //使能systick return (0);
5.SysTick中断优先级
system tick 属于内核的外设它的中断优先级与片上外设的中断优先级相比谁高依据是什么systick中断优先级配置的是scb - shprx 寄存器外设中断优先级配置的是nvic - iprx 寄存器有优先级分组STM32的外设内核还是片上都是使用4个二进制来表示中断优先级中断优先级的分组对内和和外设同样适用只需要将中断优先级的四个位按外设优先级来分组即可人为的进行分出抢占优先级和子优先级。例举 14-1 16 - 1 15 (1 1 1 1) 前面的两位表示抢占优先级后面的两位表示子优先级 3 3