介绍stm32f407滴答定时器配置方法、使用方式,封装延时函数得到精确的时间。
【1】介绍滴答定时器的章节stm32f407参考手册中第10章介绍了滴答定时器的校准值。
m4权威指南介绍滴答定时器的章节,m3权威指南中与m4权威指南中的介绍一样。
【2】滴答定时器的示例代码在sys.c文件中增加滴答定时器的代码
#include sys.h /* 函数功能:设置nvic中断控制器优先级 函数形参: irqn_type irqn:中断线 uint32_t preemptpriority:抢占优先级 uint32_t subpriority:次优先级 */ void setnvicprioritygrouping(irqn_type irqn,uint32_t preemptpriority, uint32_t subpriority) { uint32_t priority; nvic_setprioritygrouping(nvic_prioritygroup_2); //设置优先级分组,每个工程只能设置一次 priority=nvic_encodepriority(nvic_prioritygroup_2,preemptpriority,subpriority); //编码优先级 nvic_setpriority(irqn,priority); //设置优先级 nvic_enableirq(irqn); } /* 函数功能:滴答时钟初始化配置 注意:systick- >load是一个24位的寄存器,单次最大延时时间为894.7848ms 说明:18750是滴答定时器的校准值。当重载值为18750时,滴答定时器刚好产生1ms的中断 */ void systickinit(void) { systick- >ctrl&=~(1< ctrl|=1< load=18750*800;//重装载寄存器,最大24位,最大值:16777215 systick- >val=0; //清除cnt计数值 systick- >ctrl|=1< < 0; //systick 定时器的使能位 } /* 函数功能:滴答时钟中断服务函数 */ void systick_handler(void) { led0=!led0; led1=!led1; } 【3】使用滴答定时器编写延时函数在delay.c文件增加以下代码
通过屏蔽栅极和电荷平衡高电压技术设计的效率90%+开关电源
条形液晶屏的应该如何正确保养?保养方法有哪些?
商派ERP双11致胜王牌:引以为傲的云收订
CANoe进阶功能:Multi CANoe
电容的ESR是什么意思
STM32F407 滴答定时器
陶瓷基板:如何选择合适的工艺和材料
系统开机报警声全解
详细分析区块链和物联网技术应用场景与前景
索尼旗舰机首发骁龙835: 4K屏+4G运存
配有电容位移测量验证压电控制器的功能及使用方法
自主机器视觉系统时面临的复杂设计挑战
光电传感器的不同光源种类及特性对比
怎么做到EMC设计与产品设计同步?(下)
iphone8什么时候上市?iphone8的黑科技你知道多少?iphone8最全传闻锦集:还原苹果十周年纪念款手机的全貌
特斯拉2月电动汽车交付量超三成 疫情并没有对其在中国的发展产生影响
高速运算放大器AD8051\2\4、AD8091\2\3\4、LM7171国产兼容
罗克韦尔控制器与计算机实现时间同步
电气二三四线制的区别和供电方式
物联网应用落地,为云服务释放增长动力