[mw_shl_code=c,true]#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "lcd.h"
#include "led.h"
#include "exti.h"
#include "timer.h"
int main(void)
{
u8 lcd_id[12]; //??·?LCD ID×?·??®
delay_init(); //???±??????????
NVIC_Configuration(); //?è??NVIC????·?×é2:2??????????????2???ì????????
LED_Init(); //????????LED??????????????
LCD_Init();
delay_ms(50);
TIM2_Init(4999,14399); //10Khz??????????????????5000??500ms
sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id); //??LCD ID?ò????lcd_id??×é??
POINT_COLOR=DARKBLUE; //??±?????
LCD_ShowString(20,40,220,24,24,"^_^ Mini STM32 ^_^"); //x,y,width,height,size,*p
LCD_ShowString(70,70,200,16,16,"TIMER-LCD TEST");
LCD_ShowString(70,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(70,110,200,16,16,lcd_id); //????LCD ID
POINT_COLOR=GREEN;
LCD_ShowString(70,130,200,16,16,"WEATHER: SUNNY");
POINT_COLOR=DARKBLUE;
LCD_ShowString(140,150,200,12,12,"2014/7/31");
while(1)
{
LCD_ShowChar(70,170,':',24,1);
LCD_ShowChar(120,170,':',24,1);
}
}
#include "timer.h"
#include "led.h"
#include "lcd.h"
void TIM2_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //?????¨?±?÷?±??
TIM_DeInit(TIM2); //??TIM2?è?????±????
TIM_InternalClockConfig(TIM2); //?????????±????
TIM_TimeBaseStructure.TIM_Period = arr; //×?????×°????
TIM_TimeBaseStructure.TIM_Prescaler = psc; //?è???¤·????????±?¤·???????psc?±???ò?±??·?????psc+1
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //?è???±??·???
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //?è?????ò??????
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM2, psc,TIM_PSCReloadMode_Immediate); //?????????¨?±?÷?¤·?????
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //????????±ê??
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); //?????¨?±?÷????
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM2????
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //??????????0??
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //????????0??
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??±?????
NVIC_Init(&NVIC_InitStructure); //?ù??NVIC_InitStruct?????¨???????????????èNVIC?????÷
TIM_Cmd(TIM2, ENABLE); //????TIM2
}
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //?ì?é???¨??TIM????·??ú??·?:TIM ??????
{
static u16 sec,min,hour;
LED0 = !LED0;
LCD_ShowNum(150,170,sec,2,24);
sec ++;
if(sec==60)
{
sec=00;
min++;
}
LCD_ShowNum(100,170,min,2,24);
if(min==60)
{
min=00;
hour++;
}
LCD_ShowNum(50,170,hour,2,24);
if(hour==24)
hour=00;
}
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //????TIMx???????????í??:TIM ??????
}[/mw_shl_code]
|