历史上的今天
今天是:2024年12月21日(星期六)
2018年12月21日 | STM32L0 SysTick无法进入中断怎么处理
2018-12-21 来源:eefocus
使用LL库,对systick进行配置LL_SYSTICK_SetClkSource(LL_SYSTICK_CLKSOURCE_HCLK);
LL_SYSTICK_EnableIT();
如此设置,选择了时钟源,打开了中断。讲道理应该可以进中断。但是,事实上却不是这样。systick就是进不了中断。
检查一下标志位:

原因是systick没有使能。
使用如下函数可以初始化systick。
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
{
return (1UL); /* Reload value impossible */
}
SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0UL); /* Function successful */
}
这是一个带返回值的函数。传递参数ticks是对reload进行赋值。如果参数合法,则对systick进行初始化。包括reload寄存器设置、优先级设置、Counter Value寄存器设置,还有就是时钟源选择、中断允许、systick使能等操作。返回值表示成功与否。想成功使用systick,直接调用函数SysTick_Config()就可以了。
史海拾趣
|
vs2005 在VC++建立一个MFC智能设备工程,我以为和evc4是一样的.但不知为什么有些类总是提示找不到.比如:CCeDBDatabase类等.难道vs2005 在VC++不支持evc4的东西?… 查看全部问答> |
|
请教: 当单片机向 PC 串口发串数据 windows 系统怎么知道单片机 向它发了数据呢? 是有消息触发, 还是 windows 每一定的时间去扫描串口? 谢谢!… 查看全部问答> |
|
http://www.tinyos.net/ Tinyos是一个传感网络操作系统,最近发展较快,采用nesC语言、支持多种编译器。 http://freaklabs.org/index.php/FreakZ-Open-Source-Zigbee-Stack.html 也是一个不错的zigbee协议栈,不过作者似乎忙于其他项目 ...… 查看全部问答> |
|
12.1 引言 27312.2 非阻塞I/O 27312.3 记录锁 27512.3.1 历史 27612.3.2 fcntl记录锁 27612.3.3 锁的隐含继承和释放 28012.3.4 &nbs ...… 查看全部问答> |




