IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 2021-08-07- STM32 F407/M4呼吸灯实现 -> 正文阅读

[嵌入式]2021-08-07- STM32 F407/M4呼吸灯实现

M4 -使用基础定时器实现呼吸灯

前言:

本人初学cortex-M4 的小练习,只使用一个基础定时器+按键+led,分别实现流水灯,呼吸灯,以及他们两者之间的切换,并做到尽可能的整个程序的运行有较小的阻塞。
下方只展示呼吸灯部分代码,内容杂乱,目前还处于学习积累的小小白阶段,仅供方便自己学习积累,欢迎大佬们进行批评指正。

问题描述:

主要遇到的问题是在没有外部中断的情况下实现流水灯和呼吸灯中的 “延时” 导致的程序阻塞,导致单片机会因延时导致无法快速运行,浪费大量等待时间,以及影响按键扫描

解决方案:

1:定时器实现pwm效果 假定一个周期,然后对一个周期划分出高低电平。

2:根据:对应不同状态或状态切换可以有相应的处理动作的处理思想,
在流水灯以及呼吸灯中,分别加入一个 1 us的延时,然后通过改变一个数值,对不同的状态进行判断,进而进行不同的操作。

下方只展示呼吸灯部分代码,内容杂乱,仅供自己学习积累,欢迎大佬们进行批评指正,也欢迎交流。


int j = 0, k = 1, times = 0;  //j 用来 由 0-499 499-0 k 反转减加的标志位 times每次1 us 通过times来模仿delay很多

void river3_led(void)
{

    if(times == 500) 				// 判断是否完成了一整个周期,完成后改变j 开启新的周期
    {

        if(j < 500 && k == 1)      // 这里的k为标志位 判断 此时应该进行加 还是进行减
        {
            if(j == 499)
            {
                k = 0;
            }

            j++;
        }
        else
        {
            j--;
            if(j == 0)
            {
                k = 1;
            }
        }
        times = 0;          		//将 times 置零 在进去 开启新的“占空比”下的走完完整的一个周期
        cycle_time();

    }
    else                  			 // 反之 就会来到这里 继续进行 times ++
    {
        cycle_time();
    }

}
void cycle_time(void)
{

    times++;    		 // 改变times 即变 "占空比"  

    if(times <= j)       //j是改变的 所以此处的times 受到j的控制 因此 电平的时间就会改变 实现呼吸效果
    {
        LED1 = 0;
        LED2 = 0;
        LED3 = 0;
        LED4 = 0;
    }
    else if(times <= 500)  		//在500 中剩下的周期 执行 高电平 让其熄灭
    {
        LED1 = 1;
        LED2 = 1;
        LED3 = 1;
        LED4 = 1;

    }

    Delay_us(1);
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:23:46  更:2021-08-09 10:25:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:17:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计