STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
STM32F407 使用HAL库延时微妙实现方法(STM32CubeMX配置)
作者 : 李剀
出处 :
https://blog.csdn.net/Kevin_8_Lee/article/details/89243195
或者
https://www.cnblogs.com/kevin-nancy/p/10696681.html
欢迎转载,但也请保留上面这段声明。 谢谢! (以上两个链接均是我个人的博客,只是在不同的平台上面)
先说一下为什么写这篇博客。
不知道大家有没有遇到过这种情况,当你在移植别人的程序的时候,尤其是移植STM32的程序,从标准库移植到HAL库的时候,总是无奈延时微妙函数在HAL库中找不到,delay_us(u8 us); 很多次我都是用毫秒延时代替了, 但是,这样会使得程序的效率大大降低,所以通过参考别人的资料,通过定时器写了延时us函数,延时还是很准确的
1、我所使用的单片机型号及开发环境
**PS**
: emmmmm… (这里并不是打广告,只是我个人使用的这个开发板,其他任何的开发板,只要主控芯片一样均可以)
开发环境如图,我是用的Cube+IAR, Keil5也可以的,都一样。
2、使用Cube配置定时器TIM7
PS: 每个定时器都可以,但是最好使用最低级的定时器,TIM7和TIM8都只能定时,所以我这里用的TIM7
这里我新建一个工程演示
选择STM32F407zg芯片
RCC和SYS配置就不截图了,大家都会的
时钟树配置如下图
通过查看STM32F407的数据手册可以知道
TIM7的频率就是APB1的频率,84MHz
TIM7配置:预分频系数为84-1 (83)
自动重载值 1
(这里的自动重载(arr)一定要设置为1,不能为0,否则无法得到正确的结果)
则TIM7的溢出频率 = 84MHz / (83 + 1) = 1MHz(1us)
在IAR或者MDK编译器中写代码
在tim.c文件里面添加代码,一定要写在
/* USER CODE BEGIN 1 */
/* USER CODE END1 */
之间,否则下次在Cube中有所更改,再重新生成文件,不在规定区域的代码会消失
void delay_us(uint16_t us)
{uint16_t differ=0xffff-us-5; HAL_TIM_Base_Start(&htim7);__HAL_TIM_SetCounter(&htim7,differ); while(differ < 0xffff-5) { differ = __HAL_TIM_GetCounter(&htim7); } HAL_TIM_Base_Stop(&htim7);}
效果见下图,上面的代码我特别打出来,方便大家复制
不要忘了在tim.h中对函数进行声明
OK, 接下来进行测试并用示波器显示
我们在主函数里面写入测试代码,通过示波器观察波形及周期,看一下延时是否成功及精确。。
在主函数的while(1)循环中写入上图所示测试代码,理论结果是PF9引脚的输出电平每100微妙反转一次
示波器延时的波形如下图
这里我们可以看到,周期为200.8us, 即100.4us电平反转一次,还是很精准的
是梦别怕疼,想赢别喊停! 加油吧
STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案相关推荐
- STM32F407霸天虎HAL库CubeMX学习笔记——DS18B20
STM32F407霸天虎HAL库CubeMX学习笔记--DS18B20 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil printf重写 tim.c DS18B20.h DS18B20 ...
- STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)
STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例) 目录 STM32CubeMX | STM32 F1系列HAL库低功耗 ...
- STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片
STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片 STM32基础工程生成 首先使用STM32CUBEMX生成STM32的基础工程,配置时钟到7 ...
- STM32CubeMX | 基于STM32使用HAL库实现USB组合设备之多路CDC
STM32CubeMX | 基于STM32使用HAL库实现USB组合设备之多路CDC 本博客完整代码下载地址:https://download.csdn.net/download/qq15347150 ...
- STM32F407霸天虎HAL库学习笔记——串口发送
STM32F407霸天虎HAL库学习笔记--串口收发 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil printf重写 main函数 五.实验效果 一.软件准备 软件准备 二.硬件准备 ...
- STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示
STM32F407霸天虎HAL库学习笔记--使用ADC采集MQ135的数据并通过OLED显示 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil MQ135.c MQ135.h main函 ...
- 2.STM32F407之HAL库——星星点灯
使用STM32CubeMX配置工程+MDKARM编写代码实现LED灯的控制 一.LED 二.配置STM32CubeMX 三.引脚配置属性详解 四.MDK设置+代码编写 五.下载验证 如何使用STM ...
- 4.STM32F407之HAL库——按键
使用STM32CubeMX配置工程+MDKARM编写代码实现按键控制 一.按键简介 二.STM32CubeMX配置 三.代码实现 一.按键简介 轻触式按键开关:按键开关是一种电子开关,属于电子元器 ...
- STM32CubeMx安装教程(HAL库)(保姆级别)
一.打开官网 STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics 二.点击GETSoftware 三. ...
- 基于stm32cubeMX的stm32f103c8t6的HAL库开发的智能小车------小车接线和材料准备
我的第一辆智能小车 提示:小编也是初学者,本文适用于想完成一个基础智能四轮车的初学者,大佬还请勿喷,欢迎各位指出错误的地方 暑假在家无聊,刚好也在学习STM32的HAL库,就想着做个小车巩固自己学到的 ...
最新文章
- xcode 学习笔记2:动态添加view
- 第八周项目实践1 建立顺序串的算法库
- DL之DenseNet:DenseNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- LeetCode77:Combinations
- ElementUI+VUE 日期控件禁用用法
- iphone以旧换新活动_iPhone第3轮降价背后:销售下滑库克甩锅给中国,国产手机崛起分食蛋糕...
- [转载] New Concept English 1——Lesson 7 Are you a teacher?
- 年关将至,很多朋友想要创业的心又开始蠢蠢欲动了
- 《Oracle SQL疑难解析》——1.10 删除表中的所有行
- JavaScript控制类名(className属性)
- Same Tree - LeetCode
- python词频统计排序小demo
- 解析数论引论 第1章 算术基本定理
- CAD图纸的保存格式DWG DWF DXF互相转换是怎么操作的?
- 魅族16Xs评测:集“够用”与性价比于一身
- 脚本病毒---实验十二:脚本病毒
- CorelDRAW_X6使用汇总
- jsp文件打开全是黑色字体
- R语言水文序列突变点检验之滑动平均差法
- Android 系统内的守护进程 - main类服务(1) : netd
热门文章
- Linux嵌入式_详解从原理图到数据手册解析PWM蜂鸣器实现
- Linux开发_printf打印无消息或末尾带“#“or“%“
- gnu ld链接出现“ no .eh_frame_hdr table will be created.”
- 【装饰者模式】Decorator Pattern
- 两table水平滚动条级联滚动(同步滚动)。 table1放标题,table2放内容。
- sql: sql developer tunnel转接
- 写给初学asp.net的新人们 新手学习经验
- 面向对象编程思想概览(三)继承
- ssh图示+hibernate图示
- Ubuntu中软件安装与卸载