STM32 普通定时器(TIM3)中断 实现流水灯实验

发布者:RadiantSmile最新更新时间:2017-09-25 来源: eefocus关键字:STM32  普通定时器  TIM3  中断  流水灯 手机看文章 扫描二维码
随时随地手机看文章

/***********************************************************

通过定时器TIM3产生间隔时间为1秒的中断,在中断响应

函数中控制LED发光二级管,实现流水灯效果

***********************************************************/

void TimeInit()

{
   TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
   NVIC_InitTypeDef NVIC_InitStructure;
   
   //打开相应的时钟
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);


   //清除TIM3的中断待处理位:TIM 中断源
   TIM_ClearITPendingBit(TIM3,TIM_IT_Update);


   //设置定时器TIM_TimeBaseInit初始化定时器的时钟基数
   TIM_TimeBaseStructure.TIM_Period = 2000 -1;
   TIM_TimeBaseStructure.TIM_Prescaler = 36000 -1;
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
   TIM_TimeBaseInit(TIM3, & TIM_TimeBaseStructure);


   //使能指定的TIM中断
   TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE );


   //使能TIM定时器
   TIM_Cmd(TIM3, ENABLE);


   //设置NVIC
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
   NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);

}

中断函数编写

//TIM3中断响应函数
void TIM3_IRQHandler(void)
{
    static int i = 0;
//判断是否发生中断
if(TIM_GetITStatus(TIM3, TIM_IT_Update) == SET)
{
//清除EXTI线路挂起位
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);

   GPIO_Write(GPIOC, (u16)~(0x01<if(8 == i)  i= 0;
}
}


关键字:STM32  普通定时器  TIM3  中断  流水灯 引用地址:STM32 普通定时器(TIM3)中断 实现流水灯实验

上一篇:STM32定时器中断关于何时清除中断的总结
下一篇:stm32定时器时钟源问题

推荐阅读最新更新时间:2024-03-16 15:38

【单片机学习】51单片机【中断系统】,详细介绍
一、先知先会 1、什么是中断? CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 形象一些,把这图“理解记住 2、什么是中断源? 引起CPU中断的根源,称为中断源。 解释:中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统。 3、中断源具有的优点 随着计算机技术的应用,人们发现中断技术不
[单片机]
【单片机学习】51单片机【<font color='red'>中断</font>系统】,详细介绍
飞思卡尔单片机DZ60---SCI(中断发送)
#include hidef.h /* for EnableInterrupts macro */ #include derivative.h /* include peripheral declarations */ #define LED_D1 PTDD_PTDD0 #define LED_D1_DIR PTDDD_PTDDD0 #define LED_ON 0 #define LED_OFF 1 unsigned char SCANF_SEND_STRINGS = HELLO MCU WORLD ; unsigned char *pSendString = SCANF_SEND_STRINGS;
[单片机]
STM32 IAP 无法运行用户程序的解决方法
IAP程序: 主要是设置用户程序的起始地址 APPLICATION_ADDRESS,如0x08004000,通过外设把用户代码写入FLASH的用户区。满足条件后,跳转至用户区起始地址。 解释一下跳转部分代码: /* Test if user code is programmed starting from address APPLICATION_ADDRESS */ if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)// 判断栈顶地址是否在0x2000 0000 - 0x2000 2000之间 // 通过判断栈顶地址值是否正确来判
[单片机]
<font color='red'>STM32</font> IAP 无法运行用户程序的解决方法
灯管预热和中断定时器电路图
灯管预热和中断定时器电路图 灯管预热和中断定时器电路图 在ML4835中设计的灯管起动状况执行电路,目的是让灯管的寿命尽量长久,同时在灯管正常输出条件期间让镇流器发热最低。图中的电路能控制灯管的起动过程:灯丝的预热和灯管输出的中断。 Cx的充电电流是(IR(SET)/4),它经Rx放电。当功率增大时,Cx上的电压复原到0?7V(VBE)。Cx上电压升到4?75V的时间,则是灯丝预热的时间。在预热期间振荡器的充电电流ICHG=2.5/RSET。这将产生预热灯丝的高频信号,但不会产生足够的电压来点亮灯管,也不会产生有效的发光电流。 在阴极预热之后,倒相器的频率降到fSTART,它产生的高电压值点亮了灯管。如果当灯管已点亮时
[电源管理]
灯管预热和<font color='red'>中断</font><font color='red'>定时器</font>电路图
STM32互补PWM输出使能控制
STM32的高级定时器TIM1可以产生互补的PWM,并且可以通过相关寄存器的设置使能或关闭PWM的输出。在编写BLDC的驱动程序时,本人利用TIM1的channel1,2,3三个通道生成了三路互补的PWM波形,定时器驱动程序如下: void TIM1_Init(u16 arr, u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_BDTRInitTypeDef TIM_BDTRIni
[单片机]
STM32学习---GPIO和按键(流水灯学习)
//main的完整过程: int main(void){ LED_GPIO_CONFIG(); //定义LED灯; KEY_GPIO_CONFIG(); //定义按键; //循环判断按键的过程: while(1){ if((KEY_SCANF(GPIOC,GPIO_Pin_5)==0)){ //确定按键完全按下 if(GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)==0) //当灯都亮起时,GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)读到输出数据; GPIO_SetBits(GPIOD,GPIO_Pin_2); //
[单片机]
【自学51单片机】4---进制转换、C语言变量种类和运算符
不同进制之间转换、C语言变量种类和运算符、keil的Debug用法及应用 和 流水灯的实现 1、二进制、十进制、十六进制转换 1.1 进制介绍 十进制:逢十进位,一个为有十个值:0~~9。 二进制:逢二进位,它的一个位只有两个值:0 和 1,是实现计算机系统的最基本的理论基础,计算机(包括单片机)芯片是基于成万上亿个的开关管组合而成的,他们每一个都只能有开和关两种状态,对应于二进制的 1 和 0 两个值,书写二进制数据时需加前缀 0b,每一位的值只能是 0 或 1。八位二进制称为一个字节。 十六进制:把 4 个二进制位组合为一位来表示,用 0~9 再加上 A~F(或 a~f)表示,逢十六进位,是二进制的一种缩写形式,也是我
[单片机]
【自学51单片机】4---进制转换、C语言变量种类和运算符
STM32 RTC实时时钟(二)
上次实验完成了对实时时钟的基本功能——计时的实验,这次在计时的基础上对RTC的可编程闹钟的功能进行测试。 RTC 单元提供两个可编程闹钟,即闹钟 A 和闹钟 B。 可通过将 RTC_CR 寄存器中的 ALRAE 和 ALRBE 位置 1 来使能可编程闹钟功能。如果日历亚秒、秒、分钟、小时、日期或日分别与闹钟寄存器RTC_ALRMASSR/RTC_ALRMAR 和RTC_ALRMBSSR/RTC_ALRMBR 中编程的值相匹配,则 ALRAF 和 ALRBF 标志会被置为1。可通过 RTC_ALRMAR 和 RTC_ALRMBR 寄存器的 MSKx 位以及 RTC_ALRMASSR 和RTC_ALRMBSSR 寄
[单片机]
<font color='red'>STM32</font> RTC实时时钟(二)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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