#include "stm32f10x.h"
#include "io.h"
#include "sys.h"
u8 n=0;;
void timer_init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //?????¨?±?????÷3???±??
TIM_TimeBaseStructure.TIM_Period = arr;//?è??×???×°????????
TIM_TimeBaseStructure.TIM_Prescaler =psc;//?è??·???????
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//?è???±??·????ò×?
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//?è?????ò??????????
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );//?????ü??????
//??????????????
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3????
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //??????????0??
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //?ì????????3??
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??±?????
NVIC_Init(&NVIC_InitStructure); //??????NVIC?????÷
Txd_signal = 1;
}
void TIM3_IRQHandler(void) //TIM3????????
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update)!= RESET) //?ì?é????3??·?·??ú
{
u16 GPIOA_date,num;
GPIOA_date =GPIO_ReadInputData(GPIOA);
num =GPIOA_date & 0x001f;
num=num*2;
if(num==n)
{
LED3=1;
Txd_signal = 0;
}
if(num+1== n++)
{
TIM_Cmd(TIM3, DISABLE);//?????¨?±?????÷3
Txd_signal = 1;
n=0;
}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //????????3??????±ê??
}
}
请问我仿真这段代码没有使能定时计数器怎么会进入中断函数, 一上电就会执行 LED3=1;
|