STM32中HAL_Delay函数的改写

news/2025/3/15 5:00:28/

最近在做NVC与STM32芯片的通信,因为NVC要匹配时序宽度,考虑到系统时钟的频率的设定,所以专门研究了一下,也是为了以后遇到的话可以回头看看笔记之类,也给大家做一个参考

 

STM32是8分频特性,具体的延迟函数可以参照下面的代码做修改

比如系统的频率为80Mhz,则分出来的频率为10MHZ,即HAL_Delay延迟的单位是1/10MHZ=0.1us,需要400us则需要乘以4000变为400us去设置,以后谨记。

__weak void HAL_Delay(uint32_t Delay){uint32_t temp;SysTick->LOAD = Delay * 4000;SysTick->VAL=0X00;//清空计数器SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源do{temp=SysTick->CTRL;//读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达SysTick->CTRL=0x00; //关闭计数器SysTick->VAL =0X00; //清空计数器}    

 


http://www.ppmy.cn/news/810133.html

相关文章

STM32F4(用SysTick实现Delay函数)

STM32F4(用SysTick实现Delay函数) GitHub仓库&#xff1a;https://github.com/XinLiGitHub/STM32F4xx_Delay_Example PS&#xff1a;博文不再更新&#xff0c;后续更新会在GitHub仓库进行。 1&#xff0c;开发环境 1&#xff0c;适用芯片&#xff1a;STM32F4全部芯片 2&…

关于各种型号单片机delay函数不起作用问题的解决方法

这里以单片机HT45F75为例&#xff1a; // 定义一个延时xms毫秒的延时函数 void delay(unsigned int xms) // xms代表需要延时的毫秒数 { unsigned int x,y; for(xxms;x>0;x--) for(y960/4;y>0;y--) { _nop(); }; } &#xff08;1&#xff09; 首…

正点原子delay函数移植到rt thread操作系统(HAL库)

正点原子教程中涉及到的操作系统只涉及了UCOS的教程&#xff0c;其中例程的system文件夹中的delay.c函数只是适配了UCOS。 下面将delay.c函数移植到rt thread中&#xff0c;使用的bsp是rt thread stm32中的stm32f407-st-discovery开发板 已修改好的delay.c函数&#xff08;适配…

linux内核级调用时间delay函数,及常用文件头

最近做一个嵌入式内核级rookit 的编写/ 需要设计一个每3秒亮一次灯的内核级rookit 在设计rookit中使用了delay时间&#xff0c;需要包含<linux/delay.h>头文件。 #include<linux/delay.h> //linux内核级文件头,用户应用层一般调用不了# #include<unistd.h>…

快速计算delay函数中for循环延时程序占用的时间

首先根据板子上晶振知道时钟频率为12MHz(0.08us0.1us)&#xff0c;板子上长方形金属外壳上有标&#xff08;或者看原理图&#xff09; 根据ISP软件延时计算器得到循环代码 运行_nop_()需要包含库 #include <INTRINS.H> void Delay500ms() //12.000MHz {unsigned c…

c语言延时函数nop,延时函数怎么写delay

1. c语言延时函数delay,怎么算延时 下面是delay 函延迟函数里执行的都是空语句,也就是说通过循环执行空语句来达到延迟的目的.每执行一条语句,即使是空语句都要耗费电脑一些处理时间的,就是因为这个,在延迟函数里写一些无关紧要的东西,用来浪费电脑处理时间,从而达到延迟…

delay函数的用法及声明

在VC中使用带上头文件#include <windows.h>注意:在VC中Sleep中的第一个英文字符为大写的"S"在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.Sleep函数的一般形式:Sleep(unisgned lon…

c51简单delay函数,不同类型同值字符的延时时间不同

c51简单delay函数&#xff0c;不同类型同值字符的延时时间 一、 简单delay函数&#xff08;晶振频率 11.0592 MHZ&#xff09; #define uchar unsigned char #define uint unsigned int #define ulong unsigned longvoid Delay(uchar i) {while(i--); }在学习c51单片的过程中…