STM32 CubeMX如何生成微秒(us)级延时
会自动在tim.c里面生成代码,如下:
/* Includes ------------------------------------------------------------------*/
#include "tim.h"
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
TIM_HandleTypeDef htim17;
/* TIM17 init function */
void MX_TIM17_Init(void)
{
htim17.Instance = TIM17;
htim17.Init.Prescaler = 0;
htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
htim17.Init.Period = 65535;
htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim17.Init.RepetitionCounter = 0;
if (HAL_TIM_Base_Init(&htim17) != HAL_OK)
{
Error_Handler();
}
}
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{
if(tim_baseHandle->Instance==TIM17)
{
/* USER CODE BEGIN TIM17_MspInit 0 */
/* USER CODE END TIM17_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM17_CLK_ENABLE();
/* USER CODE BEGIN TIM17_MspInit 1 */
/* USER CODE END TIM17_MspInit 1 */
}
}
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
{
if(tim_baseHandle->Instance==TIM17)
{
/* USER CODE BEGIN TIM17_MspDeInit 0 */
/* USER CODE END TIM17_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM17_CLK_DISABLE();
}
/* USER CODE BEGIN TIM17_MspDeInit 1 */
/* USER CODE END TIM17_MspDeInit 1 */
}
然后自己再写一个函数;
/* USER CODE BEGIN 4 */
void Delay_us(uint16_t nus)
{
__HAL_TIM_SetCounter(&htim17, 0);//htim17
__HAL_TIM_ENABLE(&htim17);
while(__HAL_TIM_GetCounter(&htim17) < (36 * nus));//36是系统时钟,更改这里就行了。
/* Disable the Peripheral */
__HAL_TIM_DISABLE(&htim17);
}
/* USER CODE END 4 */
因为36 * 1/36M 对应的就是1us,用定时器来做延时是很准的。
STM32 CubeMX如何生成微秒(us)级延时相关推荐
- stm32实现毫秒ms微秒us级延时
stm32实现毫秒ms微秒us级延时 上一篇文章简单捋了一下32时钟初始化的过程,对systick嘀嗒定时器有了一定的了解吧 实现方法有很多种,推荐一个博客:https://blog.csdn.net ...
- python实现亚毫秒(微秒)级延时
python实现亚毫秒(微秒)级延时 python的常用延时函数为time.sleep,最小延时精度为0.001秒,即time.sleep(0.001)延时为1毫秒,在windows10操作系统下,逻 ...
- 一、STM32用HAL库实现uS级延时
一.应用场景 STM32CubeMX可视化初始化配置,结合 HAL 库,给STM32软件开发提高了效率,但 HAL 库封装的延时函数目前仅支持 mS 级别的延时,日常很多情况下会用到 uS延时,比如I ...
- 无需另配定时器在STM32 HAL下实现微秒级延时(兼容FreeRTOS)
目录 前言 一.代码部分 二.使用和验证 1.引入头文件 2.初始化 3.使用和验证 三.可移植性 总结 前言 接触HAL库差不多两年了,一直苦于HAL库没有自带微秒级的延时,网上的前辈们给出的解决方 ...
- stm32实现Systick的毫秒级延时和微妙级延时
学习目标: stm32实现Systick的毫秒级延时和微妙级延时 学习内容: 1.Systick 工作原理 Systick(系统定时器)是ARM Cortex M3/M4 内核的一个外设,因为所有的C ...
- Windows 微秒级 延时
QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时. // 微秒级延时 参数: 微秒 void Control::MySleep(DWORD ...
- 20140627-STM8L101F3P6关于微秒级延时函数不同写法的波形
总结一下STM8L101F3P6工作在16MHz下,利用死循环.中断等不同写法的微秒级延时函数精度的情况. 一.死循环空指令的写法,延时函数程序如下: /*********************** ...
- c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS
最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...
- STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐
1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5). 基本定时器:它有 ...
最新文章
- MyBatis 之 动态SQL
- 多个类的DLL封装及调用
- linux命令无视错误,llinux 的一些命令和错误
- spark TaskMemoryManager shuffle 内存管理
- sklearn炼丹术之——Linear Models汇总
- Distribution download cancelled. Using distribution from 'https://services.gradle.org/distributions/
- 如何在CentOS 7上安装和安全配置MariaDB 10
- 【高等数学】多元函数f(x,y...)的泰勒(Taylor)展开式
- 11种基于ARM的嵌入式操作系统
- [转]Ceph:OpenStack标配Linux PB级分布式文件系统详解
- 矩阵转置---c语言实现
- win10计算机控制面板在哪里,Win10控制面板在哪里?Win10怎么打开控制面板?
- 快手:星星之火,寒冬燎原
- php形状特征提取方法,LowB沙箱-PHP动态特征提取
- 基于java的物流信息管理系统(计算机毕业设计)
- 微博指定日期舆情数据爬虫获取—基于中文金融词典(python)
- Cover Letter Response Letter
- 链接:https://pan.baidu.com/s/1U-UlYoranUvpfj97XLrHvQ 提取码:ZMTD
- JavaScript高级编程语言基础语法
- CVPR 2023 接收结果出炉!再创历史新高!录用2360篇!(附10篇最新论文)
热门文章
- oracle oem 13c新特性,【EMCC】Oracle 13c OEM 安装测试(13.2.0.0)
- windows挂载nas存储 NAS Share / NFS系统
- c语言实现gps坐标转化,C语言计算GPS卫星位置
- 2016年(第15届)中国软件业务收入前百家企业名单(zz)
- 因果AI如何发现因果
- DevOps 面试小宝典:总有一个你会用到
- 超模脸、网红脸、萌娃脸...换头像不重样?我开源了5款人脸生成器
- SQL Server 2017无法启动,提示“系统找不到指定的文件”【虚拟机内安装的】
- App 适配 iOS 11
- 网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)