在上一篇文章中https://blog.csdn.net/OldHuangC/article/details/104350534,我利用了延时函数实现了按键软件去抖的方法,现在利用系统的滴答定时器来实现精准延时的。在这块ESK32-30501v2.1的板子上有一个外部8MHZ高速晶振 (HSE),它连接的是PB13和PB14。利用它作为时钟源,编写出精准的延时函数就是本篇文章的目的。
delay.c

#include "ht32_cm0plus_misc.h"
#include "delay.h"
//mS微秒级延时程序
void delay_us(u32 us)
{u32 i;SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);          //选择外部参考时钟作为SysTick时钟源。8MHZSYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000000); // 重装计数初值SYSTICK_IntConfig(DISABLE);                            // 是否开启中断SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);             //清空定时器SYSTICK_CounterCmd(SYSTICK_COUNTER_ENABLE);            //使能for( i = 0;i < us;i++ ){while( !( (SysTick->CTRL) & (1<<16) ) ); }SYSTICK_CounterCmd(SYSTICK_COUNTER_DISABLE); //关闭SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);   //复位清零
}void delay_ms(u16 ms){ //mS毫秒级延时程序       while( ms-- != 0){delay_us(1000);    //调用1000微秒的延时}
}void delay_s(u16 s){ //S秒级延时程序               while( s-- != 0){delay_ms(1000); //调用1000毫秒的延时}
} 

毫秒级函数的实现方法就是调用1000次微秒级函数,秒级函数则是调用1000次毫秒级函数
delay.h

#ifndef __DELAY_H
#define __DELAY_H
#include "ht32_cm0plus_misc.h"
void delay_s(u16 s);
void delay_ms(u16 ms);
void delay_us(u32 us);
#endif

main()

#include "ht32.h"
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "key.h"
int main()
{
u8 MENU;
u16 t,i;//初始化程序RCC_Configuration(); //时钟设置LED_Init();//设置变量的初始值MENU = 0;t = 1;//主循环while(1){//菜单0if(MENU == 0){ //变亮循环for(i = 0; i < 2; i++){GPIO_WriteOutBits(HT_GPIOC,LED1_PIN|LED2_PIN,SET);delay_us(t); //延时
GPIO_WriteOutBits(HT_GPIOC,LED1_PIN|LED2_PIN,RESET);delay_us(1001-t); //延时}t++;if(t==1000){MENU = 1;}}//菜单1if(MENU == 1){ //变暗循环for(i = 0; i < 2; i++){GPIO_WriteOutBits(HT_GPIOC,LED1_PIN|LED2_PIN,SET);delay_us(t); //延时
GPIO_WriteOutBits(HT_GPIOC,LED1_PIN|LED2_PIN,RESET);delay_us(1001-t); //延时}t--;if(t==1){MENU = 0;}}      }
}

当时钟源被设定为8MHz时,如果要产生1ms 时间基准。那么他的计算方法就是(8M/8/1000) = 1ms.这里利用了延时函数实现了LED呼吸灯的效果 .

HT32F5232学习之利用dealy延时函数实现呼吸灯效果相关推荐

  1. 决策报表里使用延时函数实现某些js效果

    1. 描述 有的时候有些js代码在cpt里可以运行成功,但是在决策报表里会没有效果,举例: 分页预览改变鼠标悬停所在行背景色的代码,在决策报表的报表块使用,预览时没有效果. 2. 思路 这是由于决策报 ...

  2. Arduino ESP32利用PWM实现板载LED呼吸灯效果

    Arduino ESP32利用PWM实现板载LED呼吸灯效果 LEDC简介 LED控制(LEDC)外围设备主要用于控制LED的强度,尽管它也可以用于生成PWM信号用于其他目的.它具有16个通道,可以生 ...

  3. STM32使用延时控制LED灯亮暗变换,LED呼吸灯效果

    STM32F407ZE 使用延时控制LED灯亮暗变换,实现LED呼吸灯效果 具体代码如下: main.c部分 #include <stm32f4xx.h> #include "s ...

  4. matlab中的pause是什么意思,【Matlab学习笔记】【函数学习】一(延时函数pause)...

    采用MATLAB中的延时函数pause: Halt execution temporarily 使用方法: pause pause(n) pause on pause off 函数描述: pause, ...

  5. STM32CubeMX学习教程之五:PWM实现呼吸灯效果

    完整源码下载: https://github.com/simonliu009/STM32CubeMX-PWM-Output 软件: STM32CubeMX V4.25.0 System Workben ...

  6. 单片机实现led呼吸灯效果 宏定义函数

    写了一个简单的LED呼吸灯效果代码,可作为C语言初学者for循环的练习,用宏定义方便调用. 四个变量可调亮灭时间,i大,灭的时间长: j大,灭得慢; m大,亮的时间长: n大,亮得慢. 用STM32F ...

  7. 延时函数介绍和呼吸灯的实现

    文章目录 延时函数介绍 呼吸灯原理 杨桃32学习笔记,本文图片文字皆为转述 延时函数介绍 分为delay_s秒,delay_ms毫秒,delay_us微秒延时,最大参数不能超过65535. 呼吸灯原理 ...

  8. 51单片机 (四)延时函数

    接下来我们要讲单片机的延时函数,那什么是延时函数呢,其实在我们单片机代码中,每次执行一条代码是很快的,也就几微秒左右,那有时候我们想让某一条代码执行后等待一阵子,再去执行下一条,这时候就需要用到延时函 ...

  9. [LPC]基于LPC54114的延时函数设计及应用

    在常规的例程中,都少不了测试I/O控制作用的点亮LED的程序.而伴随该例程出现的往往少不了延时函数,利用此类延时函数则可以达到相对精准的时基性的延时效果,如毫秒级及微秒级的函数.缺少了此类延时函数,则 ...

最新文章

  1. UStore-自定义JDF文件格式输出
  2. Android之linux基础教学之二 总体架构
  3. 跟我一起写操作系统(二)——史上最简单的内核
  4. Windows服务器补丁列表及介绍_传奇单机架设,列表读取失败?单机架设经常遇到的问题分享!...
  5. 计算最大回撤_量化扫盲:什么是最大回撤?
  6. 数据结构实验之栈与队列九:行编辑器
  7. 拉面说:如何成为速食拉面独角兽
  8. unity3d 求两个点长度_三年级上册求组合图形周长专项练习,附答案
  9. git tag打标签常用命令
  10. 扒一扒,互联网大厂内部都用什么软件沟通?
  11. 程序设计实践之车辆信息管理系统
  12. java中intern,JAVA中String的intern方法
  13. 正则验证车牌号(含新能源)
  14. js中0.1+0.2为什么不等于0.3
  15. 计算机视觉OpenCv学习系列:第十部分、实时人脸检测
  16. 使用路由器上网微信qq绝地求生腾讯系打开慢或打不开的问题
  17. 苏嵌//张福辉//2018.7.27
  18. layui管理后台模板
  19. 2016世界人工智能大会 AI领袖共启智能+新纪元
  20. 南华大学的计算机专业学校排名,2019南华大学专业排名

热门文章

  1. 王道书 P335 T05
  2. 课后作业-龙永健194
  3. Python 爬虫:获取 JS 动态内容——应用宝搜索应用
  4. 记录sentry的踩坑之路
  5. SSL论文笔记:Billion-scale semi-supervised learning for image classification
  6. [置顶]谷歌大牛 Jeff Dean 是如何成为互联网战神的
  7. 卡巴斯基防火墙反***的设置技巧
  8. 使用Oh my posh美化Windows终端(一)
  9. delve应该安装到哪_Golang /Go调试工具delve
  10. Alibaba后台4年,跳槽字节,艰难4面技术,成功砍下开发岗offer