#include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "lcd.h" #include "usart.h" #include "timer.h" #include "beep.h" extern u32 sec; int main(void) { delay_init(); //延時函數初始化 NVIC_Configuration(); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級 uart_init(9600); //串口初始化為9600 LED_Init(); LCD_Init(); BEEP_Init(); TIM3_Int_Init(9999,7199);//10Khz的計數頻率, 延時1s == 1000 000us while(1) { LCD_ShowString(30,70,200,16,16,"Zhaocundang:14160310317"); LCD_ShowString(30,162,200,2,16,"Second Clock:"); LCD_ShowNum(150,162,sec,2,16);
} }
#include "timer.h" #include "led.h" #include "sys.h" #include "usart.h" #include "lcd.h" #include "beep.h" #include "delay.h" ////////////////////////////////////////////////////////////////////////////////// //本程序只供學習使用,未經作者許可,不得用於其它任何用途 //ALIENTEK戰艦STM32開發板 //定時器 驅動代碼 //正點原子@ALIENTEK //技術論壇:www.openedv.com //修改日期:2012/9/3 //版本:V1.0 //版權所有,盜版必究。 //Copyright(C) 廣州市星翼電子科技有限公司 2009-2019 //All rights reserved ////////////////////////////////////////////////////////////////////////////////// volatile u32 sec=0; //通用定時器3中斷初始化 //這里時鍾選擇為APB1的2倍,而APB1為36M //arr:自動重裝值。 //psc:時鍾預分頻數 //這里使用的是定時器3! // TIM3完成定時60s void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //時鍾使能 //定時器TIM3初始化 TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鍾頻率除數的預分頻值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鍾分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據指定的參數初始化TIMx的時間基數單位 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中斷,允許更新中斷 //中斷優先級NVIC設置 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中斷 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優先級0級 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優先級3級 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能 NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器 TIM_Cmd(TIM3, ENABLE); //使能TIMx } //定時器3中斷服務程序 void TIM3_IRQHandler() //TIM3中斷 { if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查TIM3更新中斷發生與否 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中斷標志 LED1=!LED1; } sec++; if(sec==60) { //趙存檔 QQ463431476 LED0=0; delay_ms(100); LED0=1; delay_ms(100); LED0=0; delay_ms(100); LED0=1; delay_ms(100); BEEP=1; delay_ms(200); BEEP=0; sec=0; } }