STM32的Systick设置问题:

STM32的Systick设置问题:,第1张

这是设置SysTick 定时器的一个初始化函数,具体解析如下:

void SysTInit(void)

{

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8)//SysTick时钟源为AHB时钟除以8

SysTick_SetReload(9000)//SysTick重装载值为9000

SysTick_ITConfig(ENABLE)//使能SysTick中断

NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 0, 0)//设置优先级为0组0级

SysTStop()

}

systick中断逻辑包括void SysTick_Handler(void)。

SysTick是arm处理器中一个24位的系统计时器,向下递减,主要用于系统节拍数的计算,stm32使用的也是arm的处理器,它的中断函数叫void SysTick_Handler(void)。

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//SysTick时钟源为AHB时钟除以8。

SysTick_SetReload(9000);//SysTick重装载值为9000。

SysTick_ITConfig(ENABLE);//使能SysTick中断。

NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick。

中断源识别

当系统中有多个中断源时,一旦有中断请求,CPU必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入CS与IP/EIP两个寄存器。CPU转入相应的中断服务子程序开始执行。

主程序和中断服务子程序都要使用CPU内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。现场保护是由用户使用PUSH指令来实现的。

while(temp&0x01&&!(temp&(1<<16)))这句话的意思就是判断计数器是否计数完成需要两个条件,第一个条件是计数值为0就是temp&0x01为0,另一个条件就是SysTick->CTRL寄存器的第十六位的标志位countflag为1时,两个条件满足时就完成计时,就跳出循环。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11557155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存