STM32电子时钟
STM32電子時鐘
?部分程序
void TIM3_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時鐘頻率除數(shù)的預分頻值
?? ?TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割:TDTS = Tck_tim
?? ?TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; ?//TIM向上計數(shù)模式
?? ?TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時間基數(shù)單位
?
?? ?TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中斷,允許更新中斷
?? ?//中斷優(yōu)先級NVIC設置
?? ?NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; ?//TIM3中斷
?? ?NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; ?//先占優(yōu)先級0級
?? ?NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; ?//從優(yōu)先級3級
?? ?NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
?? ?NVIC_Init(&NVIC_InitStructure); ?//初始化NVIC寄存器
?? ?TIM_Cmd(TIM3, ENABLE); ?//使能TIMx?? ??? ??? ??? ??? ??
}
//定時器3中斷服務程序
void TIM3_IRQHandler(void) ? //TIM3中斷
{
?? ?if(TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET) ?//檢查TIM2更新中斷發(fā)生與否:TIM中斷源
?? ?{
?? ??? ?TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx的中斷待處理位: TIM中斷源
?? ??? ?count+=1;
?? ?}
?? ?if(count==60)
?? ?{
?? ??? ?count=0;
?? ??? ?B+=1;
?? ??? ?if(B==60)
?? ??? ?{
?? ??? ??? ?B=0;
?? ??? ??? ?A+=1;
?? ??? ??? ?if(A==24)
?? ??? ??? ?{
?? ??? ??? ??? ?A=0;
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?LCD1602_ShowStr(1,0," ? ?");
總結
- 上一篇: 4g网络什么时候淘汰_5G时代来临后,4
- 下一篇: Win10应用商店不能更新软件怎么办?