STM32精确延迟1us和1ms的函数
延迟1us:
void delay_us(u32 i)
{u32 temp;SysTick->LOAD=9*i; //设置重装数值, 72MHZ时SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源SysTick->VAL=0; //清零计数器do{temp=SysTick->CTRL; //读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达SysTick->CTRL=0; //关闭计数器SysTick->VAL=0; //清空计数器
}
延迟1ms:
void delay_ms(u32 i)
{u32 temp;SysTick->LOAD=9000*i; //设置重装数值, 72MHZ时SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源SysTick->VAL=0; //清零计数器do{temp=SysTick->CTRL; //读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达SysTick->CTRL=0; //关闭计数器SysTick->VAL=0; //清空计数器
}
注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。
转载自:https://www.cnblogs.com/jiwangbujiu/p/5463751.html
STM32精确延迟1us和1ms的函数相关推荐
- c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS
最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...
- STM32中关于串口通信的printf()函数重定向问题
在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法. 方法一.对工程属性进行配置 第1步:在main.c中包含"stdio.h ...
- stm32延时us寄存器_自己写一个STM32 HAL库的US微秒延时函数
当本菜鸟开始接触STM32的时候还是看了原子哥的寄存器教程才跳坑的. 现在ST已经把HAL库推向了主流,但是令我不解的是,HAL那么强大,居然没有一个微秒级别的延时函数?! 黑人问号脸. 好了,废话不 ...
- STM32 定时器的简单应用 1ms中断代码
引言:利用定时器TIM8产生1ms中断,每中断一次,全局变量+1,计数到10即10ms,使得输出引脚翻转一次.芯片采用STM32F103VCT6,系统输入时钟12MHz,完成代码并用示波器输出. 根据 ...
- 新唐单片机如何生成精确延迟
最近在搞新唐单片机,所以记录下这部分内容. 之前的相关文章 呵,你会51单片机的精确延时吗? 假如使用者想要产生精确的延迟时间,建议使用 __nop() 函数来组合达成.__nop() 函数能够产生 ...
- 004:STM32启动文件详解及SystemInit函数分析(转)
1 ;先在RAM中分配系统使用的栈,RAM的起始地址为0x2000_0000 2 ;然后在RAM中分配变量使用的堆 3 ;然后在CODE区(flash)分配中断向量表,flash的起始地址为0x080 ...
- STM32启动文件详解及SystemInit函数分析
1 ;先在RAM中分配系统使用的栈,RAM的起始地址为0x2000_0000 2 ;然后在RAM中分配变量使用的堆 3 ;然后在CODE区(flash)分配中断向量表,flash的起始地址为0x080 ...
- 呼吸灯中1us、1ms、1s计时器加1和翻转条件
//1ms计数器 always@(posedge sys_clk or negedge sys_rest_n) if (!sys_rest_n) cnt_1ms <= 10'b0; else i ...
- STM32—时钟树(结合系统时钟函数理解)
时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处.心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来 ...
- c语言随机数循环延迟,C语言生成随机数的函数、延时函数
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面C语言代码使用了生成随机数的函数.延时函数.请大家仔细观察其显示效果. 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定 ...
最新文章
- frame,iframe,frameset之间的关系与区别
- 代码段间转移控制时的特权级检查(JMP/CALL)——《x86汇编语言:从实模式到保护模式》读书笔记28
- svn 命令行查看history及比较不同版本
- 剑指offer-面试题13.在O(1)时间删除链表节点
- ffmpeg和SDL学习笔记
- element vue 动态单选_SpringBoot+Vue(MyBatis + Shiro + Jwt + Druid + Redis + ElementUI )快速开发框架...
- Oracle--plsql之控制结构
- 什么叫侧面指纹识别_哪种指纹识别方式好?侧边指纹识别可能会成为主流
- 如何在M1上运行较早的非本机Intel x86应用
- 【使用教程】面向回家编程-12306智能刷票,订票
- 按键精灵html库,【源码分享】雷电模拟器 - 按键精灵PC - 命令库
- Tiny6410 的NandFlash(K9GAG08U0E)
- 查询vue版本、脚手架版本
- NOIP2018普及组初赛题解
- npm引入小程序官方WeUI组件库weui-miniprogram
- 物权法全文内容有哪些呢-广告外链_有哪些网络推广免费平台
- 《汇编语言》第 8章 -数据处理的两个基本问题 检测点,实验7,总结
- 飞瞳引擎™AI集装箱识别检测云服务,全球两千企业用户投入使用,集装箱信息识别率99.98%以上高泛化性,集装箱信息识别云服务免费
- EBS功能_PO匹配审批层总结
- 该不该抛弃那匹马呢?