stm32 delay函数的理解
1,首先看HCLK是多少频率,
2,Systick用的是外部时钟源(STCLK),还是内核时钟源(FCLK);外部时钟源是 HCLK(AHB总线时钟)的1/8;内核时钟是 HCLK时钟
void delay_us(u32 nus)
{
u32 ticks;
u32 told,tnow,tcnt=0;
u32 reload=SysTick->LOAD; //LOAD的值
ticks=nus*fac_us; //需要的节拍数
tcnt=0;
delay_osschedlock(); //阻止OS调度,防止打断us延时
told=SysTick->VAL; //刚进入时的计数器值
while(1)
{
tnow=SysTick->VAL;
if(tnow!=told)
{
if(tnow<told)tcnt+=told-tnow; //这里注意一下SYSTICK是一个递减的计数器就可以了.
else tcnt+=reload-tnow+told;
told=tnow;
if(tcnt>=ticks)break; //时间超过/等于要延迟的时间,则退出.
}
};
delay_osschedunlock(); //恢复OS调度
}
3,查看SysTick_LOAD存的初值,SysTick_VAL此时的值,算出延迟1us所需的节拍数
4,判断SysTick_VAL递减的次数与节拍数相等,若相等则推出延迟,否则继续判断
stm32 delay函数的理解相关推荐
- 7.STM32中对DMA_Config()函数的理解(自定义)测试DMA传输数据时CPU还可继续工作其他的事
STM32中对DMA_Config()函数的理解(自定义):
- 4.STM32中对USART1_Config()函数的理解(自定义)
STM32中对USART1_Config()函数的理解
- 3.STM32中对EXTI_PE5_Config()函数的理解(自定义)之中断控制按键LED
STM32中对EXTI_PE5_Config()函数的理解(自定义)
- 2.STM32中对Key_GPIO_Config()函数的理解(自定义)之轮询控制按键LED
STM32中对Key_GPIO_Config()函数的理解(自定义)
- 1.STM32中对LED_GPIO_Config()函数的理解(自定义)之流水灯
STM32中对LED_GPIO_Config()函数的理解(自定义)
- STM32项目总结及代码中delay函数需慎用
这半年实验室做了个智能XX的调度平台,大概思想是通过部署的端设备实时采集信息并且通过通信的方式发送给云端服务器,最后可以实现WEB端和小程序的实时访问和监控,上位机方面自不用说,硬件方面,昨天把做出的 ...
- STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)
STM32延时函数的三种方法:普通延时.SysTick 定时器延时(1.中断方式:2.非中断方式) 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ ...
- tm4c123gxl库函数调包侠养成(一)——————基本系统时钟与delay函数
一.tm4的环境 本人使用的是ccs系统,安装教程网上很多,这里不一一赘述.ccs内部的集成允许tm4单片机编译下载调试仅靠数据线就可以完成,而不用独立的jlink,也算是其进步之处吧. 二.系统时钟 ...
- ucos系统使用delay函数死机原因
delay函数,占用了stm32的时钟 ucos需要靠stm32的时钟来调度任务 用裸机得delay就剥夺了ucos的时钟,所以死机 ucos ii 系统应该使用OSTimeDlyHMSM(0,0,0 ...
最新文章
- iOS 后台挂起的一些坑
- 农历法定日历_木瓜日历安卓版下载-木瓜日历V1.5下载
- hfs快速搭建HTTP文件服务器
- jvm运行时数据区是干啥的?CPU切换线程会不会突然忘记程序执行到哪一步了
- UVA-804 模拟
- Python 中reload一个文件时报错 ( reload() argument must be module)
- java xca碗组口径,公路车常见杂音检查清单和解决方法(图文)
- ORACLE 11G DATA GUARD配置之配置过程
- shell脚本相关指令
- 《C语言及程序设计》实践参考——阿姆斯特朗数
- .NET 获取类型中的属性
- 如何从官网下载hibernate
- 暴力破解zip,rar密码
- vv7无法启动显示发动机故障_启动系统故障引起的发动机无法启动诊断方法
- Nvidia驱动支持的linux版本,NVIDIA首发OpenGL 3.1驱动 全面支持Linux
- 使用table自带的deleteRow,insertRow方法实现表格内容滚动
- 什么是BI、什么是ETL?一篇文章告诉你
- 数据仓库中历史拉链表的更新方法
- JAVA连接SQL2005
- (JAVA练习)输入一个四位数,各个位的数字相加