STM32学习日志——主函数框架:时间轮

发布者:TranquilJourney最新更新时间:2023-01-13 来源: zhihu关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

读大学时候,老师曾教了一种叫时间轮的方法,当时没好好学习。自己在写程序时经常乱用延时,一方面占用CPU资源,原本单片机可以执行更多的任务,却被用来延时,特别浪费,另一方面可能出现各种各样的问题。


使用时间轮的方法,可以使单片机像人一样,以时间为尺度,来规划任务。人可以决定今天几点吃饭,几点看书,几点睡觉。


而单片机依靠定时器的中断,每隔0.5ms进入一次中断,可以设定在任意的时间点执行合适的任务,比如需要usart发送比较重要的数据的,可以让它以1ms间隔发送,比如不重要的数码管显示,可以让他200ms执行一次。而这个框架可以直接套用于主程序。

配置定时器

主程序框架

主程序框架

关键字:STM32 引用地址:STM32学习日志——主函数框架:时间轮

上一篇:总结大佬经验,如何学习STM32?(入门、进阶)
下一篇:STM32学习日志——按键的单击、双击、长按

推荐阅读最新更新时间:2024-11-03 06:06

STM32:Keil MDK(uVision v4.10)开发环境搭建
集成开发环境(IDE):Keil公司的RealView MDK(uVision V4.10) 源文件编辑器:EditPlus(我在用的)/UltraEdit/SourceInsight/IDE自带的编辑器 串口工具:SecureCRT(一个专业的超级终端工具,支持很多接口(包括串口)和协议,推荐使用。) RealView MDK 工程配置:(keil开发环境搭建核心步骤) 1、新建文件夹,文件夹名如:Template 2、在文件夹Template下新建文件夹:User/ Project/ Output/ Listing/ Libraries/CMSIS/ Libraries/FWlib/ Doc/ 3、在Project/文件
[单片机]
智能家居系统设计(裸机stm32/μCOS-III)
在正式讲解之前,先来总结一下。该项目是对大学学过的部分知识进行整合,同时这也是我大学的毕业设计,也算是对大学的一个交待。 首先来讲述一下该项目具体实现了哪些功能,方便大家理清思路。该项目拥有四种控制方式,分别是语音识别、触摸屏、小程序、APP,而控制的对象是家用电器(这里利用一个多路继电器来模拟家用电器)。 这四种控制方式还能对采集的数据进行反馈显示: 在语音识别方面,语音模块识别到特定的关键词语后,会将采集到的温湿度数据通过语音播报模块进行播报反馈; 在触摸屏和APP方面,将采集到的温湿度、有害气体浓度、光照强度显示在触摸屏上,还可以设置湿度和有害气体浓度的阈值(湿度阈值的设置是当湿度超过设定阈值时,表明室外下雨
[单片机]
智能家居系统设计(裸机<font color='red'>stm32</font>/μCOS-III)
玩转STM32(11)CPU的心跳历程
前面说CPU怎么样才有脉搏,也就是给CPU装了一个心脏,这样这个由泥沙组成的CPU才能开始拥有像生命的力量了。在前文后面,提到了使用25MHz晶振作为外部的频率来源,但是我们的目标是让CPU工作在168MHz的频率,这样才可以让CPU工作得更快,运行代码更快,效率更高。当然,如果你想让CPU工作在25MHz也是可以的,只是有点不值得,用这么贵的硬件,运行这么低的频率。要想快,就得提高CPU运行的频率,那么怎么样才可以把25MHz的频率转换为168MHz的频率呢?可以看到168M是比25M频率高很多,显然要使用到倍频电路,也要使用到分频电路。比如把25M按25分频系数来分频,那么得到频率就是1M,然后再使用倍频电路,比如使用336作
[单片机]
玩转<font color='red'>STM32</font>(11)CPU的心跳历程
Stm32 SWD 下载 调试配置
找到一篇比较好的 关于stm32 SWD模式 下载 调试 配置文章 整理如下: 我们比较常用的是Jlink下载器 ,这种下载器有一个缺点就是使用的Jtag 20PIN接口,太多的PIN会导致一些小型的PCB板很拥挤,也会增加布线的难度。 而使用SWD接口下载调试,只需要要使用4个PIN: GND, RST, SWDIO, SWDCLK ,而且下载速度可以达到10M/s,优势显而易见。 以下转自: http://www.openedv.com/posts/list/187.htm 我们所使用的Jtag 20PIN引脚图: 相关原理图: SWD 仿真模式概念简述
[单片机]
<font color='red'>Stm32</font> SWD 下载 调试配置
使用Keil MDK运行第一个STM32程序
1.1.1 使用Keil MDK运行第一个STM32F10X程序 在上一小节中已经详细介绍了使用Keil MDK和标准外设库创建一个工程的过程,下面将介绍基于这个工程来编写一个小程序,通过这个程序我们可以初步了解: l STM32标准外设库的简单使用过程 l STM32外设的使用方法和大致流程 l 程序的编译、链接、下载步骤 l 利用Keil MDK的在线仿真功能进行软件仿真的简要步骤 1. 程序的编写 (1)程序实现的功能 为了方便各位读者的入门和理解,这个小程序的功能非常简单,作为本书功能实践的第一个程序,其功能当然也是最为经典的“Hello World!”了,只不过不是简单的屏幕输出,而是利用硬件的串口进行输出,同时作为单片
[单片机]
使用Keil MDK运行第一个<font color='red'>STM32</font>程序
STM32蜂鸣器模拟播放歌曲
/********************************************************************** *函数名:BEEP_Init *功 能:蜂鸣器初始化 *参 数:无 *返 回:无 *备 注: 引脚 点蜂鸣器电平 模式 速度 PC3 高电平 通用推挽输出 50M **********************************************************************/ void BEEP_Init(void)
[单片机]
STM32的ADC单次转换设计
下面分别为库函数和直接操作寄存器的两个范便,我都已测试通过 使用此程序前必要对GPIO设好为模拟输入方式 =====================================库函数版========================================= void AD_CONFIG_SINGLE(void ) { //先配置IO口: ADC_InitTypeDef adcInitStruct; ////PB1 作为模拟通道输入引脚 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);//使能ADC和GPIOC时钟 //配置ADC: //将ADC配置成非
[单片机]
<font color='red'>STM32</font>的ADC单次转换设计
STM32自定义printf实现多串口互用
STM32 串口使用频繁的朋友可能知道一个问题,库自带的 USART_SendData 函数一次只能发送 1 Byte 字符 如果我们要输出一个带格式、带参数的串口数据就只能通过 sprintf 打印到一个临时数组,然后再使用一个for循环调用USART_SendData一个字符一个字符的输出,过程非常麻烦! 姜斌是一个非常怕麻烦的人所以这种方法无疑让我发疯!后来在原子(OpenEDV)那里购买了开发板拿到了例程。里面重定向了printf函数作为串口输出函数,有了这个函数之后就能够很轻松的参数输出,但问题就在这里我们串口1 串口2 都要带参数输出怎么办? 本次实验:自定义printf函数 实验数据来源: 配置usart
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved