参考的正点原子的代码

测试平台

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相关推荐

  1. STM32 使用HAL库实现微秒级长延时

    STM32 使用HAL库实现微秒级长延时 背景 定时器初始化 主程序中的设计 背景 STM32 HAL库中有一个延时函数HAL_Delay(),可以实现毫秒级的延时,能够满足一般延时需求.在有些场合下 ...

  2. STM32基于HAL工程硬件I2C读写AT24C02/04/08数据

    STM32基于HAL工程硬件I2C读取AT24C02数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!

  3. STM32基于HAL工程读取DHT11数据

    STM32基于HAL工程读取DHT11数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!

  4. STM32标准库工程中移植TencentOS-tiny

    一.移植前的准备 1. 引言 因为项目的原因需要将原有的标准库工程升级为基于TencentOS-tiny的RTOS工程,所以花费一点时间记录移植过程,提供一份向基于STM32标准库的老工程中移植Ten ...

  5. STM32 CubeMX HAL库 之红外接收(NEC协议)定时器捕获

    第一次自己写完整的硬件驱动,发上来给大家看看,顺便吸收些改进方案,希望各位能够不吝赐教,指出代码的不足之处.同时我也很高兴这代码能给你带来帮助. 工程使用CubeMX创建,使用VS Code编程,单片 ...

  6. STM32基于HAL工程读取DHT11/DHT22/AM2302/AM2301

    STM32基于STM32-HAL工程读取DHT11/DHT22/AM2302/AM2301 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!

  7. STM32+CubeMX开发工程笔记汇总(更新2021.8.12)

    一.前言 使用STM32开发产品已经快两年了,一路走来真的非常有意思. 单片机型号:从STM32F103->STM32F407->STM32H743 库: 从标准库->HAL库(ST ...

  8. STM32+CubeMX开发工程笔记汇总(更新2022.6.12)

    一.前言 使用STM32开发产品已经快两年了,一路走来真的非常有意思. 单片机型号:从STM32F103->STM32F407->STM32H743 库: 从标准库->HAL库(ST ...

  9. 【STM32+CubeMX+HAL库】摩尔斯译码器开发

    虽然寄存器开发执行效率很高,但代码的移植性只能说一般,标准库导入文件,相对来说也比较麻烦,那么CubeMX和HAL库的出现,让广大开发者们多了一份选择. STM32CubeMX给了想上手开发STM32 ...

最新文章

  1. Unet神经网络为什么会在医学图像分割表现好?
  2. 个人知识体系思维导图_高中数学知识点思维导图
  3. 大数据WEB工具Hue
  4. freopen()函数在ACM中的使用
  5. ubuntu 串口调试工具推荐_串口调试能有多便捷?——FUR组件的应用
  6. 实现textbox输入时模糊查询
  7. 计算机二级C选择题精华
  8. 关于Spring事务管理的基础实例
  9. 蓝桥杯官网 试题 基础练习 阶乘计算(C++ 高精度)
  10. Vue实现省市区信息选择(附前端源码)
  11. IO前哨站之##File##
  12. vue的Des加密解密
  13. linux 双显卡如何切换显卡,解决Ubuntu双显卡切换问题
  14. python推理拟合函数
  15. 年龄识别之AgeNet
  16. android 调取数字键盘,Android自定义键盘的实现(数字键盘和字母键盘)
  17. Altium Designer快捷键
  18. 二维数组的查找(每一行每一列都是递增顺序)?
  19. ascii码中的A的代码是什么?
  20. 2020 03 13 小米实习生一面

热门文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之Webshell密码
  2. 介绍Zabbix的两种监控模式(主动模式和被动模式)
  3. 【每日一学】复杂度分析
  4. Oracle不加IP无法登录,Oracle 无法通过IP连接问题
  5. 因果图方法中的基本符号
  6. UI设计培训分享:UI设计师如何准备面试?
  7. 零基础怎么学习web前端开发
  8. 如何定时备份数据库并上传七牛云
  9. 美团即时物流的分布式系统架构设计
  10. 1-1 分配内存资源给容器和POD