TA的每日心情 | 开心 2024-8-14 08:56 |
---|
签到天数: 101 天 连续签到: 2 天 [LV.6]常住居民II
|
本帖最后由 damiaa 于 2015-7-4 22:05 编辑
使用定时器需要以下几点:
1,设置定时器参数,开启时钟电源
2,开启定时器
3,设置中断
4,开启中断
void TIM_Configuration(void)
{
TIMER_BaseInitPara TIM_TimeBaseStructure;
NVIC_InitPara NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQ = TIMER3_IRQn;
NVIC_InitStructure.NVIC_IRQPreemptPriority = 0;
NVIC_InitStructure.NVIC_IRQEnable = ENABLE;
NVIC_Init(&NVIC_InitStructure);
RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_TIMER3,ENABLE);
/* TIMER3 configuration */
TIMER_DeInit(TIMER3);
TIM_TimeBaseStructure.TIMER_Prescaler = 10-1;
TIM_TimeBaseStructure.TIMER_CounterMode = TIMER_COUNTER_UP;
TIM_TimeBaseStructure.TIMER_Period = 10000-1;
TIM_TimeBaseStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1;
TIMER_BaseInit(TIMER3,&TIM_TimeBaseStructure);
TIMER_ClearBitState( TIMER3 , TIMER_FLAG_UPDATE);
TIMER_INTConfig(TIMER3, TIMER_INT_UPDATE, ENABLE);
/* TIMER enable counter*/
TIMER_Enable( TIMER3, ENABLE );
}
使用GPIO需要以下几点:
1,设置GPIO参数,开启时钟电源
2,调用GPIO函数
void GPIO_Configuration()
{
GPIO_InitPara GPIO_InitStructure;
RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_10;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
GPIO_Init(GPIOC , &GPIO_InitStructure);
}
主程序中调用这两个函数初始化:这里延时没用,因为在中断里点亮LED
void delayxms(uint16_t x)
{
uint16_t i,j;
for(i=0;i<x;i++)
{
for(j =0;j<1000;j++);
}
}
int main(void)
{
GPIO_Configuration();
//SysTick_Configuration();
TIM_Configuration();
while(1)
{
// delayxms(1000);
// GPIO_SetBits(GPIOC,GPIO_PIN_10);
// delayxms(1000);
// GPIO_ResetBits(GPIOC,GPIO_PIN_10);
}
}
GP32f1x0.it 里实行TIM3的中断函数
void TIM3_IRQHandler(void)
{
if(TIMER_GetIntBitState(TIMER3,TIMER_INT_UPDATE)==ENABLE)
{
static uint8_t ledflag=0;
TIMER_ClearIntBitState(TIMER3,TIMER_INT_UPDATE);
ledflag++;
if(ledflag ==200)
{
ledflag =0;
GPIO_SetBits(GPIOC,GPIO_PIN_10);
}
else
{
if(ledflag ==100)
{
GPIO_ResetBits(GPIOC,GPIO_PIN_10);
}
}
}
}
这样就实行了一个定时器点亮LED的程序。希望大家支持。
现在把源代码献上,希望大家喜欢:
mytime.zip
(1.2 MB, 下载次数: 20)
|
|