stm32处理器有一个24位的系统滴答定时器systick,它从重新加载值开始倒数到0,然后在下一个时钟边缘重新加载(包装到)stk_load寄存器中的值,然后在随后的时钟上倒数。
计数标志位countflag在系统控制和状态寄存器stk_ctrl的16位,当计时器减计数到0时,返回1。
时钟源选择位clksource在系统控制和状态寄存器stk_ctrl的2位,赋值为0时为8分频,赋值为1时为1分频。想要计数速度更快可以选择1分频的时钟源。
systick异常请求允许位tickint在系统控制和状态寄存器stk_ctrl的1位,赋值为0时禁止异常请求,赋值为1时允许异常请求。软件可以使用countflag来判断systick是否曾经被计数为零。
计数使能位在系统控制和状态寄存器stk_ctrl的0位,赋值0时禁止计数,赋值1时使能计数。
重装载值reload在systick重载值寄存器stk_load的0~23位,加载寄存器指定在启用计数器时和计数器达到0时加载到当前值寄存器stk_val的起始值。
当前的计数器值current在当前值寄存器stk_val的1~23位。前值寄存器stk_valsystick计数器的当前值。读取返回systick计数器的当前值。任何值的写入都会将字段清除为0,并将stk_ctrl寄存器中的countflag位清除为0。
查询us、ms延时函数
void systick_delayus(u32 us){ systick- >ctrl &=~ (1< load = 21*us - 1; //赋值装载值 systick- >val = 0; //清除当前值 systick- >ctrl |= 1< ctrl & (1< ctrl &=~ (1< odr &=~ (0x01< odr &=~ (0x01< odr |= (0x01< odr |= (0x01< <11); //输出为1,led灯灭 systick_delayms(500); }}编译成功后将程序烧入,led每500ms闪烁一次,systick查询定时成功。
探析美国4大运营商5G商用现状及最新目标
使用PFC电路的LED 驱动器设计
电压衰减器电路设计
华为云耀云服务器L实例:中小企业在云计算时代的强力伙伴
简述ZigBee 网络层规范
浅析STM32 Systick查询定时的处理过程
国产手机为什么北斗导航进行定位
MR混合现实情景实训教学系统模拟消防起火灭火情景实训演练
瑞萨e2studio----RTC时钟日历、闹钟、周期性中断
“智能+纯电”成威马征战主流市场杀手锏,新竞争周期格外精彩
央视:全球手机行业大洗牌!小米成最大黑马
掌握关键技术未必是抢夺物联网商机的重点
浅谈一下汽车连接器
永磁直流电机湿热盐雾环境加速试验
如何减少电子系统的电磁干扰?
百度、小米和滴滴造车,谁的胜算会更大呢?
基于MG24和MG27开发板实作的Zigbee智能家居用例
一加5最新消息:再度冲击摄影标杆!一加5这次双摄有点逆天
长江存储科普SSD、3D NAND的发展史
谷歌将主导虚拟/增强现实技术市场