STM32F103实现LED灯、按键、定时器编程
针变量后,程序运行不成功。灯不亮。
extern unsigned char flag_20ms,flag_500ms,flag_250ms;
extern unsigned char flag_key0,flag_key1;
void Led_Init(void)
{
GPIO_InitTypeDef Led_InitTypeDef;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA,ENABLE);
Led_InitTypeDef.GPIO_Mode=GPIO_Mode_Out_PP;
Led_InitTypeDef.GPIO_Speed=GPIO_Speed_50MHz;
Led_InitTypeDef.GPIO_Pin=GPIO_Pin_8;
GPIO_Init(GPIOA,&Led_InitTypeDef);
Led_InitTypeDef.GPIO_Pin=GPIO_Pin_2;
GPIO_Init(GPIOD,&Led_InitTypeDef);
LED0=1;
LED1=1;
}
/*
函数功能:KEY0按下时,LED0 每秒闪烁一下。同时LED1熄灭。
KEY1按下时,LED1 每秒闪烁二下。同时LED0熄灭。
WAKE_UP按下,LED0、LED1都熄灭。
外部变量:flag_key0,flag_key1,flag_500ms,flag_250ms
输入参数:无
输出参数:无。
*/
void Led_Control(void)
{
if(flag_key0==1)
{
if(flag_500ms==1)
LED0=0;
else LED0=1;
}
else
LED0=1;
if(flag_key1==1)
{
if(flag_250ms==1)
LED1=0;
else LED1=1;
}
else
LED1=1;
}
#include "sys.h"
#include "stm32f10x_tim.h"
#include "led.h"
#include "timer2.h"
#include "key.h"
extern unsigned char flag_20ms,flag_500ms,flag_250ms;
void Timer2_config(unsigned int presc,unsigned int period)
{
TIM_TimeBaseInitTypeDef My_TIM2_Init;
NVIC_InitTypeDef My_NVIC_Init;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
My_TIM2_Init.TIM_Prescaler=presc;
My_TIM2_Init.TIM_Period=period;
My_TIM2_Init.TIM_ClockDivision=TIM_CKD_div1;
My_TIM2_Init.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,&My_TIM2_Init);
My_NVIC_Init.NVIC_IRQChannel=TIM2_IRQn;
My_NVIC_Init.NVIC_IRQChannelCmd=ENABLE;
My_NVIC_Init.NVIC_IRQChannelPreemptionPriority=1;
My_NVIC_Init.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&My_NVIC_Init);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2,ENABLE);
}
void TIM2_IRQHandler(void)
{
static unsigned char temp1,temp2,temp3;
if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
if(temp1++>=10)
{temp1=0;flag_20ms=0x01;
keyfunction();
}
if(temp2++>=250)
{ temp2=0;flag_500ms++;
if(flag_500ms>1) flag_500ms=0;}
if(temp3++>=125)
{ temp3=0;flag_250ms++;
if(flag_250ms>1)
flag_250ms=0;
}
}
}
STM32F103LED灯按键定时器编 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
