stm32通用定时器1s延时实现LED闪烁

news/2024/9/19 8:10:52/

stm32有很多定时器,每种定时器的功能也不尽相同,今天学习了如何用通用定时器实现1s延时,使LED灯闪烁,现总结如下:

步骤总结:

使能定时器时钟->配置定时器结构体->清空定时器标志位->开启定时器中断->使能定时器->编写中断服务函数

Timer.c:

#include "Timer.h"void TimerBase_Config(void)
{//开时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//定义结构体变量TIM_TimeBaseInitTypeDef TimerBaseInitStructure;NVIC_InitTypeDef NVICInitStructure;//配置定时器结构体TimerBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TimerBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TimerBaseInitStructure.TIM_Period = 10000;TimerBaseInitStructure.TIM_Prescaler = 7200;TIM_TimeBaseInit(TIM2, &TimerBaseInitStructure);//清空标志位TIM_ClearFlag(TIM2,TIM_FLAG_Update);//开启定时器中断TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//使能定时器TIM_Cmd(TIM2,ENABLE);//配置NVIC结构体NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVICInitStructure.NVIC_IRQChannel = TIM2_IRQn;NVICInitStructure.NVIC_IRQChannelCmd = ENABLE;NVICInitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVICInitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVICInitStructure);
}

stm32f103x_it.c:

void TIM2_IRQHandler(void)
{static uint16_t temp;if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET){if(temp ++ %2 == 1){GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);}else {GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);}}TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}

main.c:

#include "stm32f10x.h"
#include "led.h"
#include "Timer.h"int main(void)
{TimerBase_Config();LED_GPIO_Confing();GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);while(1){}
}

注意事项:

一定要记得清空标志位,尤其是中断服务函数里的清空标志位,博主就因为此检查好长时间


http://www.ppmy.cn/news/395016.html

相关文章

【f1c200s/f1c100s】全志f1c200s开发板设计(含原理图和PCB)

f1c200s开发板设计 芯片特征开发板包含资源 开发板如图所示,模仿树莓派取了一个mango-pi的名字,haha~。 硬件主要参考了荔枝派nano和正点原子开发板。经过测试,全部功能正常。 芯片特征 全志F1C200s与F1C100s的区别为F1C200s含有64M SIP RA…

K8S的apiVersion版本详解

文章目录 1. 背景2. 各种apiVersion的含义3. 查看当前可用的API版本 1. 背景 Kubernetes的官方文档中并没有对apiVersion的详细解释,而且因为K8S本身版本也在快速迭代,有些资源在低版本还在beta阶段,到了高版本就变成了stable。 如Deployme…

scanf_s用法

写在前面 在用VS2015进行C语言编程时,写输入函数不能写成scanf,而要写成scanf_s,今天我将给大家解释为什么和怎么用。 为什么? ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会…

s-function的介绍

定义:S-函数是 System function 系统函数的简称,是指采用非图形化(即计算机语言,而非Simulink系统模块)的方式描述的功能模块。在 MATLAB 中,用户除了可以使用MATLAB 代码编写 S-函数以外&#…

K8s 介绍

K8s 介绍 Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。 使用Kubernetes可以: 1. 自动化容器的部署和复制 2. 随时扩展或收缩容器规模 3. 将容器组织成组,并且…

全志F1C200s芯片处理器参数介绍

F1C200s是全志的一款高度集成、低功耗的移动应用处理器,可用于多种多媒体音视频设备中。 全志F1C200s基于ARM 9架构,集成了DDR。它支持高清视频解码,包括H.264、H.263、MPEG 1/2/4等。它还集成了音频编解码器和I2S/PCM接口,以增强…

极路由1S HC5661A 刷入不死u-boot(breed)加刷潘多拉固件教程

原文来自:新版极路由1S(HC5661A)刷潘多拉加SS配置教程 不死uboot(breed)如何使用 下文是以原文为基础,更详细也更适合小白的整合版。 注意:本贴是新版的白盒极路由1S(HC5661A)教程&#xff…

解析 css3 transition:all 1s ease 1s

ease: 1、ease:(逐渐变慢)默认值 2、linear:(匀速) 3、ease-in:(加速) 4、ease-out:(减速) 5、ease-in-out:(加速然后减…

java如何实现让程序暂停1s再继续执行?

java如何实现让程序暂停1s再继续执行? www1314520sss | 浏览 16157 次 问题未开放回答 |举报 推荐于2017-09-10 16:16:36 最佳答案 被采纳的那位有个小错误 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class a{ public static void main(String[] args) { Sy…

定时器中断控制LED闪烁(每隔1s)---普中科技开发仪

定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE 0,C/T0是定时器,C/T1是计数器; MiM0: 工作方式设置位…

51单片机实验——用定时器0实现流水灯,要求每个led轮流显示1s。

1.实验题目&#xff1a; 用定时器0实现流水灯&#xff0c;要求每个led轮流显示1s。 2.KEIL代码 #include<reg51.h> void main() {TMOD &0X0F;TMOD |0x01;TH0 (65536 - 50000)/256;//高四位初值TL0 (65536 - 50000)%256;//低四位初值&#xff0c;每隔50ms溢出EA…

VBA 等待1S 处理方法

Application.Wait (Now TimeValue("0:00:01")) 表示暂停1s

通过单片机定时器输出周期为1s的方波,驱动LED灯闪烁

方波 方波的占空比固定是50%,即高电平和低电平的时间为1:1; 方波的周期:从一个上升沿(下降沿)到下一个上升沿(下降沿)的时间; 由此可得知周期为1s的方波就是高电平占0.5s,低电平占0.5s的波形; 单片机定时器 MCS-51有两个定时器,定时器0,定时器1; 相关寄存器 TMOD…

定时器0工作方式2,定时1s

定时器0工作方式2&#xff0c;定时1s

过渡属性 transition:all 1s linear 0s;

过渡属性的作用就是体现元素默认样式与最终样式变化的过程。 代码格式&#xff1a;transition&#xff1a;all 1s linear 0s&#xff1b; 注&#xff1a; 第一个参数的作用是设置元素的哪些属性过渡&#xff0c;all表示全部过渡&#xff0c;width代表属性宽度过渡&#xff0c;…

51单片机如何延时1s,让LED灯闪烁

精确地延时1s需要准确地计算&#xff0c;粗略地延迟1s可以自定义一个delay函数&#xff0c;下面我们让第一个LED灯延迟1s闪烁&#xff1a; //本题的delay函数参数为1时延迟的是1ms&#xff0c;1000是1s #include<reg52.h> #define uchar unsigned char #define uint…

Linux网卡命名enp1s0说明

用了很多年Linux的我在升级Ubuntu 16.04之后竟然发现我的以太网卡的名字竟然不是eth0&#xff0c;变成了enp1s0&#xff0c;每次想要修改什么配置&#xff0c; 都要先ifconfig查一下网卡名&#xff0c;真是让我很郁闷&#xff01; 去网上搜索一下才知道&#xff0c;这次的Ubun…

汇编语言软件延时1s

对于不同的计算机&#xff0c;因为其主频不同&#xff0c;延时1s的参数也不相同&#xff0c;计算延时的方法如下: 计算机主频&#xff1a;x &#xff08;Hz&#xff09; 一条LOOP语句执行始终周期数&#xff1a;y 所需要延时的时间&#xff1a;z &#xff08;s&#xff09; 需…

定时器0工作方式1,定时1s

定时器0工作方式1&#xff0c;定时1s。

时间单位的换算(秒,毫秒,微秒,纳秒,皮秒)

时间单位&#xff1a; 秒&#xff08;second&#xff09;&#xff0c;时间单位 &#xff1a; s&#xff0c;   毫秒(millisecond&#xff09;&#xff0c;时间单位&#xff1a;ms   微秒&#xff08;microsecond&#xff09;&#xff0c;时间单位:μs 时间换算: 1s【秒】 …