历史上的今天
今天是:2025年03月01日(星期六)
2020年03月01日 | STM32-systick系统定时器
2020-03-01 来源:eefocus
systick系统定时器
系统定时器存在内核中,是24位的定时器,只能向下递减,嵌套在NVIC中

counter 在时钟的驱动下 在reload的初值开始向下递减计时到0,产生中断置位标志然后又从reload值开始重新递减计数,循环
定时时间计算
t=reload*(1/clk)
clk=72M时,t=72*(1/72m)=1us
clk=72M时,t=72000*(1/72m)=1ms
clk=72M时,t=72000000*(1/72m)=1s
1s=1000MS =1000 000US=1000 000 000NS
sysTick属于内核中的外设,他的中断优先级和外设的中断优先级相比,哪个高?
sysTick中断优先级配置的是scb->shprx寄存器
而外设的中断配置的是NVIC->iprx,有优先级分组和抢占优先级和子优先级的说法。
中断优先级在内核外设同样适用。
systick的使能函数:
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
//判断tick的值是否大于2^24,如果大于,不符合规则
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1);
//初始化reload寄存器的值
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;
//配置中断优先级,配置为15,默认为最低优先级
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
//初始化counter的值为0
SysTick->VAL = 0;
//配置systick的时钟为72M
//使能中断
//使能systick
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
编写微秒延时函数
void SysTick_Delay_us(uint32_t us)
{
uint32_t i;
SysTick_Config(72);
for(i=0;i //当计数器的值时间到了后,CTRL寄存器位16会置1 while(!((SysTick->CTRL)&(1<<16))); } SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk; } 利用中断来进行延时 void SysTick_Init(void) { if(SysTick_Config(SystemCoreClock/100000)) while(1); } void Delay_ms(__IO u32 nTime) { uint32_t TimingDelay; TimingDelay = nTime; while(TimingDelay!=0) TimingDelay--; }
史海拾趣
|
1 引言 LIN 是低成本网络中的汽车通讯协议标准,LIN(Local Interconnect Network)是低成本的汽车网络,它是现有多种汽车网络在功能上的补充由于能够提高质量、降低成本,LIN 将是在汽车中使用汽 ...… 查看全部问答> |
|
昨日与友人闲谈,得知其急需一FDD接口的U盘.用于工控.遂发此贴,求助于诸位.提及FDD(即软驱),众皆笑曰:\"淘汰久矣!\"然,君不见其依然服役于众多工控场合?随之FPGA/RAM等先进技术之普及.待处理数据之大,昔日之1.44何以满足?市有产品曰:仿真软驱,价格奇 ...… 查看全部问答> |
|
请问各位大侠,C++.net能开发硬件程序吗,就是那种控制门口挡车杆升降的程序。 如果不能,那可以用VisualC++开发吗? 多种语言开发的程序可不可以组成一个软件上那? 谢谢各位。… 查看全部问答> |
|
偶然在网上看到了AMD的一个“我为三核狂”活动,整个活动的主旨都是围绕“三核”的概念来的,网友的热情和创意也是让人叹为观止,大家下面这些有趣的作品吧。简直是神了!大家也来欣赏一下哦 &n ...… 查看全部问答> |
|
每种STM32的产品都由16个字母或数字构成的编号标示,用户向ST订货时必须使用这个编号指定需要的产品。这16个字符分为8个部分,下面通过一个例子说明它们的意义: STM32 F 103 C 6 T 7 xxx 1 2& ...… 查看全部问答> |
|
我用P1口接4*4矩阵键盘,现在为了省出P1.0口作为AD通道,采用P2口接4*4矩阵键盘。 然后配置P2.6和P2.7作为GPIO口,然后程序的其他地方都是把P1改为P2,为什么不能用呢?????? 大家有过这样的经历吗?… 查看全部问答> |
|
经过一段时间的调试,EELogic的第一版硬件基本测试完成。 电源工作正常,68013能正常下载固件,FPGA能正常下载及运行。 基本硬件测试通过,起码保证了大家申请到板子回去焊接后能工作,避免浪费大家的时间及经费。 软件开发主要有三个部分: 1 ...… 查看全部问答> |
|
通过usb blaster ii接口烧写过一次jic文件,后来再烧写时点击“Auto Detect”就再也检测不到型号了,提示信息“unable to scan device chain.Hardware is not connected.” 求助给位怎么解决。 … 查看全部问答> |




