stm32 cubemx hal 工程中 微秒延迟 delay_us
参考的正点原子的代码
测试平台
stm32f429i-disco
配了一个gpio
时钟
gpio
/* USER CODE BEGIN 0 */ typedef uint8_t u8; typedef uint32_t u32;u8 fac_us;void delay_init(u8 SYSCLK) {#if SYSTEM_SUPPORT_OS //?????? OS.u32 reload;#endifHAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);//SysTick ??? HCLKfac_us=SYSCLK; //?????? OS,fac_us ?????#if SYSTEM_SUPPORT_OS //?????? OS.reload=SYSCLK; //???????? ??? Kreload*=1000000/delay_ostickspersec; //?? delay_ostickspersec ??????//reload ? 24 ????,???:16777216,? 180M ?,?? 0.745s ??fac_ms=1000/delay_ostickspersec; //?? OS ?????????SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;//?? SYSTICK ??SysTick->LOAD=reload; //? 1/OS_TICKS_PER_SEC ?????SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //?? SYSTICK#else#endif }void delay_us(u32 nus) {u32 ticks;u32 told,tnow,tcnt=0;u32 reload=SysTick->LOAD; //LOAD ??ticks=nus*fac_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; //????/????????,???. }}; } /* USER CODE END 0 */
int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration----------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* Configure the system clock */SystemClock_Config();/* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */delay_init(168);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_SET);delay_us(50);HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_RESET);delay_us(50);/* USER CODE BEGIN 3 */}/* USER CODE END 3 */}
实际测试, 函数调用能带来几百ns的误差.
转载于:https://www.cnblogs.com/zhaitao85/p/5736049.html
stm32 cubemx hal 工程中 微秒延迟 delay_us相关推荐
- STM32 使用HAL库实现微秒级长延时
STM32 使用HAL库实现微秒级长延时 背景 定时器初始化 主程序中的设计 背景 STM32 HAL库中有一个延时函数HAL_Delay(),可以实现毫秒级的延时,能够满足一般延时需求.在有些场合下 ...
- STM32基于HAL工程硬件I2C读写AT24C02/04/08数据
STM32基于HAL工程硬件I2C读取AT24C02数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!
- STM32基于HAL工程读取DHT11数据
STM32基于HAL工程读取DHT11数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!
- STM32标准库工程中移植TencentOS-tiny
一.移植前的准备 1. 引言 因为项目的原因需要将原有的标准库工程升级为基于TencentOS-tiny的RTOS工程,所以花费一点时间记录移植过程,提供一份向基于STM32标准库的老工程中移植Ten ...
- STM32 CubeMX HAL库 之红外接收(NEC协议)定时器捕获
第一次自己写完整的硬件驱动,发上来给大家看看,顺便吸收些改进方案,希望各位能够不吝赐教,指出代码的不足之处.同时我也很高兴这代码能给你带来帮助. 工程使用CubeMX创建,使用VS Code编程,单片 ...
- STM32基于HAL工程读取DHT11/DHT22/AM2302/AM2301
STM32基于STM32-HAL工程读取DHT11/DHT22/AM2302/AM2301 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!
- STM32+CubeMX开发工程笔记汇总(更新2021.8.12)
一.前言 使用STM32开发产品已经快两年了,一路走来真的非常有意思. 单片机型号:从STM32F103->STM32F407->STM32H743 库: 从标准库->HAL库(ST ...
- STM32+CubeMX开发工程笔记汇总(更新2022.6.12)
一.前言 使用STM32开发产品已经快两年了,一路走来真的非常有意思. 单片机型号:从STM32F103->STM32F407->STM32H743 库: 从标准库->HAL库(ST ...
- 【STM32+CubeMX+HAL库】摩尔斯译码器开发
虽然寄存器开发执行效率很高,但代码的移植性只能说一般,标准库导入文件,相对来说也比较麻烦,那么CubeMX和HAL库的出现,让广大开发者们多了一份选择. STM32CubeMX给了想上手开发STM32 ...
最新文章
- Unet神经网络为什么会在医学图像分割表现好?
- 个人知识体系思维导图_高中数学知识点思维导图
- 大数据WEB工具Hue
- freopen()函数在ACM中的使用
- ubuntu 串口调试工具推荐_串口调试能有多便捷?——FUR组件的应用
- 实现textbox输入时模糊查询
- 计算机二级C选择题精华
- 关于Spring事务管理的基础实例
- 蓝桥杯官网 试题 基础练习 阶乘计算(C++ 高精度)
- Vue实现省市区信息选择(附前端源码)
- IO前哨站之##File##
- vue的Des加密解密
- linux 双显卡如何切换显卡,解决Ubuntu双显卡切换问题
- python推理拟合函数
- 年龄识别之AgeNet
- android 调取数字键盘,Android自定义键盘的实现(数字键盘和字母键盘)
- Altium Designer快捷键
- 二维数组的查找(每一行每一列都是递增顺序)?
- ascii码中的A的代码是什么?
- 2020 03 13 小米实习生一面