功能说明:通过定时器3产生1秒的中断,(1)在中断函数中让开发板小灯闪烁,证明程序正常运行;
(2)在定时器中断函数中设置一个static变量,在中断来之
后,自动加1,且把变量值通usart发送到串口;
基础知识:
1.stm32通用定时器,16位预分频和自动重装载。
2.RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
打开定时器的时钟源。
3.其他的知识可以借助数据手册和网络得到,这里就不过多阐述。
1.main函数
int main(void) { delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); //LED端口初始化 TIM3_Int_Init(9999,7199);//延时1秒
//说明:1s = (9999+1) * (7199+1)/72M
//1.(7199+1)/72M 当stm32工作在72M时,每秒中跳动72M,通过分频,每秒钟跳动10000;
//2.(9999+1)=10000,刚好1秒
while(1) { }
/****************timer.c文件*********************/
//定时器3中断服务程序
void TIM3_IRQHandler(void) //TIM3中断
{
static u16 time=0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
time++;
printf("时间 =%d\r\n",time);
LED0=!LED0;
}
}
}
}