作者 | strongerhuang
微信公众号 | 嵌入式专栏
stm32cubemx中cortex系统定时器(system timer)选择1分频和8分频,为啥生成代码一样?
因为stm32cubemx会启动systick作为延时(hal_delay)函数的时基,而systick作为cortex内核的一部分,就会用到cortex系统定时器。
那么,问题就来了systick时钟源来自哪里?
1、数据手册和stm32cubemx时钟树
数据手册时钟树:
stm32cubemx时钟树:
你会发现:数据手册中的只有『/8』分频,而stm32cubemx除了『/8』分频,还有『/1』分频。
2、systick时钟初始化代码
不管是使用标准外设库,还是hal库,你初始化systick,都会调用内核中的systick_config函数。
标准库常用初始化:
systick_config(systemcoreclock / 1000);
hal库初始化同样也是调用底层的初始化函数:
uint32_t hal_systick_config(uint32_t ticksnumb) { return systick_config(ticksnumb); }
初始化调用这段代码之后,systick将会实现1ms中断一次。
这段代码实现1ms中断一次相信大家都能理解,但是这里systick初始化和上面说的时钟『/8』有关系吗?
3、systick时钟源是来自哪里?
这个问题只要认真看参考手册都能找到答案。
rcc通过ahb时钟(hclk)8分频后作为cortex系统定时器(systick)的外部时钟。
通过对systick控制与状态寄存器的设置,可选择上述时钟或cortex(hclk)时钟作为systick时钟。(--来自参考手册)
也就是说systick时钟源可以来自两个地方:
ahb时钟8分频
hclk(内核)时钟
通过systick控制与状态寄存器的设置进行选择时钟源。
具体就是通过clksource(时钟源)这一bit位来选择:
再次看systick_config函数源码:
__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 ctrl = systick_ctrl_clksource_msk | systick_ctrl_tickint_msk | systick_ctrl_enable_msk; /* enable systick irq and systick timer */ return (0ul); /* function successful */ } (在core_cm3.h,或者core_cm4.h等内核源码中)
你会发现,其实源码已经默认使用hclk(内核)时钟。
而systick_config函数属于内核(如core_cm3.h)已经写好源码,一般我们不去修改。
所以,到这里,你会明白:systick时钟源其实就是用的hclk(内核)时钟。
4、最后
开篇的问题:stm32cubemx中cortex系统定时器(system timer)选择1分频和8分频,为啥生成代码一样?
难道,stm32cubemx配置cortex系统定时器时钟是有bug吗?
来源:嵌入式专栏
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理
在单个封装中提供完整的有源功率因数校正解决方案
维修频谱分析仪多少钱?简单告诉你,频谱分析仪维修实例报价!
固态硬盘要注意什么 这些知识教你发挥全部性能
LED驱动可使用国产可编程多谐振荡器控制LED闪烁问题
移动电话开发测试的解决方案
STM32的SysTick时钟源来自哪里?
讯飞输入法10.0版本,功能更加丰富体验再次升级
5G引领互联网技术创新,加速互联网行业变革
选择pcb材料的最佳流程是什么
MLCC产业结构被调整 MLCC下一个战场将是车用市场
基于AT89C2051单片机和VD5026编码器实现餐厅无线呼叫服务系统的设计
笔记本电脑出货迎24个月以来首次上涨 第四季出货将达4165万台
欧姆龙推出NX1机械自动化控制器,实现制造业发展的各种应用
高镍三元材料的技术发展趋势是怎样的
信步科技OPS-3855U规格
5gnsa和sa是什么意思?5gnsa与sa区别
科研员研发出基于CQD和发色团混合体系结构的太阳能电池
数字式CMOS摄像头在智能车中的应用
Silentium利用Blackfin将有源噪声消除技术推广
2018年医疗器械行业现状 国产化仍待提升仍以中低端为主