今天搞了一天到黑弄STM32F446的外部时钟计数没找到问题,不能计数,不能进入计数中断,用的是定时器T2的通道2,下面我把我代码发在上面请各位大师傅帮我看看问题出在哪里。
/*******************************************
oˉêyÃû3Æ£oTIM2_Int_Init
1| Äü£o3õê¼»ˉ¶¨ê±Æ÷2£¬1ضϼÆêyÆ÷
2Î êy£oÎT
·μ»ØÖμ £oÎT
********************************************/
void TIM2_Int_Init(void)
{
RCC->APB1ENR|=1<<0; //TIM2ê±Öóê1Äü
RCC->AHB1ENR|=1<<0; //ê1ÄüPORTAê±Öó
GPIO_Set(GPIOA,PIN1,2,0,0,GPIO_PUPD_PU);//PA4,êäèëģ꽣¬éÏà-
GPIO_AF_Set(GPIOA,PIN1,0X01);
TIM2->ARR=10; //é趨¼ÆêyÆ÷×Ô¶ˉÖØ×°Öμ
TIM2->PSC=0; //Ô¤·ÖÆμÆ÷
TIM2->CCMR1|=0<<12; //0000ÂË2¨
TIM2->CCMR1|=1<<8; //IC2ᬽóμ½TI2éÏ
TIM2->CCER|=0<<5; //éÏéyÑØ′¥·¢
//TIM2->CCER|=0<<7; //éÏéyÑØ′¥·¢
TIM2->SMCR|=0x06<<4; //TS=110,TI2ÎaêäèëÔ′
TIM2->SMCR|=0x07; //SMS=111,Ñ¡Ôñ′¥·¢DÅoÅTRGI¶Ôó|CH2
TIM2->CR1&=~(1<<4); //¼ÆêyÆ÷μYÔö¼Æêy
TIM2->CR1|=0x01; //ê1Äü¶¨ê±Æ÷2
TIM2->DIER|=1<<0; //ÔêDí¸üDÂÖD¶Ï
MY_NVIC_Init(1,2,TIM2_IRQn,3); //ÇàÕ¼1£¬×óóÅÏ輶3£¬×é2 */
}
int main(void)
{
u16 test;
System_Init();
//MOTO_PWM_VAL=10000;
while(1)
{
TIM2->CR1&=0xfe; //ê1Äü¶¨ê±Æ÷2
//ADC_ValueFilter();
//DisWordNum(0xfa,ViValue);
test=TIM2->CNT;
TIM2->CR1|=0x01; //ê1Äü¶¨ê±Æ÷2
DisWordNum(0xfa,ViValue);
}
}
/*******************************************
oˉêyÃû3Æ£oSystem_Init
1| Äü£oÏμí33õê¼»ˉéèÖÃ
2Î êy£oÎT
·μ»ØÖμ £oÎT
********************************************/
void System_Init(void)
{
Stm32_Clock_Init(300,8,2,7);//éèÖÃê±Öó,168Mhz
//delay_init(150); //3õê¼»ˉÑóê±oˉêy
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
// TIM1_PWM_Init(16000,3-1); //168M/3=56MμļÆêyÆμÂ꣬×Ô¶ˉÖØ×°ÔØÎa16000£¬ÄÇÃ′PWMÆμÂêÎa56M/16000=3.5kHZ
uart_init(75,9600);
//Dac1_Init();
//EXTIX_Init(); //3õê¼»ˉía2¿ÖD¶Ïêäèë
// ADC1_Init();
//MYDMA_Config(DMA2_Stream0,0,(u32)&ADC1->DR,(u32)&AD_Value,ADC_N*ADC_M);
//CAN_Mode_Init(1,5,9,5,0);//CAN3õê¼»ˉ2¨ìØÂê500Kbps,ÆÕí¨Ä£ê½
//TIM4_Int_Init(100-1,750-1);//100KhzμļÆêyÆμÂ꣬¼Æêyμ½100Îa1MS,óÃóúPID2éÑù
//Run_Init();
//KEY_Init();
//TIM3_Int_Init(); //1ضϼÆêyÆ÷3õê¼»ˉ£¬1024*1
//TIM5_Int_Init(); //¿aí¨¼ÆêyÆ÷3õê¼»ˉ£¬1024*2
TIM2_Int_Init(); //1ضϼÆêyÆ÷3õê¼»ˉ£¬1024*2
//TIM8_Cap_Init(0xFFFF,72-1);//òÔ1MhzμÄÆμÂê¼Æêy
//EXTI->IMR = 0;
}
/*******************************************
oˉêyÃû3Æ£oTIM2_IRQHandler
1| Äü£o1ضϼÆê±μ½ÖD¶Ï
2Î êy£oÎT
·μ»ØÖμ £oÎT
********************************************/
void TIM2_IRQHandler(void) //TIM2ÖD¶Ï
{
TIM2->SR&=~(1<<0);//Çå3yÖD¶Ï±ê־λ
LED1=!LED1;
/*if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //¼ì2éTIM2¸üDÂÖD¶Ï·¢éúóë·ñ
{
TIM_Cmd(TIM2, DISABLE); //ê§ÄüTIM2
DoorOut(RunFlag.OFFPOSITION);
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //Çå3yTIM2¸üDÂÖD¶Ï±êÖ¾
}*/
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>