/***********************************************************
通过定时器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)中断 实现流水灯实验
推荐阅读最新更新时间: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、中断源具有的优点 随着计算机技术的应用,人们发现中断技术不
[单片机]
飞思卡尔单片机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之间 // 通过判断栈顶地址值是否正确来判
[单片机]
灯管预热和中断定时器电路图
灯管预热和中断定时器电路图 灯管预热和中断定时器电路图 在ML4835中设计的灯管起动状况执行电路,目的是让灯管的寿命尽量长久,同时在灯管正常输出条件期间让镇流器发热最低。图中的电路能控制灯管的起动过程:灯丝的预热和灯管输出的中断。 Cx的充电电流是(IR(SET)/4),它经Rx放电。当功率增大时,Cx上的电压复原到0?7V(VBE)。Cx上电压升到4?75V的时间,则是灯丝预热的时间。在预热期间振荡器的充电电流ICHG=2.5/RSET。这将产生预热灯丝的高频信号,但不会产生足够的电压来点亮灯管,也不会产生有效的发光电流。 在阴极预热之后,倒相器的频率降到fSTART,它产生的高电压值点亮了灯管。如果当灯管已点亮时
[电源管理]
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)表示,逢十六进位,是二进制的一种缩写形式,也是我
[单片机]
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 寄
[单片机]