用的MCU是STM32F301C8,刚学的IC编程就遇到莫名其妙的问题。我写的UserDelay函数应该没什么问题啊,
但是就是直接跳过了这个函数,照理说应该闪2次,然后果断时间再闪2次,结果LED灯一直常亮,不知道怎么
搞得。
程序简单描述如下:
main(){
......
LED_Init();
while(1){
......
stm_state = MCI_GetSTMState(oMCI[0]);//这个函数是获得电机的状态
UserDelay(5);
LED_Application(2,1);//闪2次,后面的1是间隔
......
}
....
}
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13 ;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_Level_3;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_SetBits(GPIOC, GPIO_Pin_13 );
}
void UserDelay(uint16_t wTime)
{
uint16_t i,j;
for (i=0;i<wTime*1000;i++){
for(j=0;j<1000;j++){
;
}
}
}
//blinkNum : blink number
//delayTime : blink interval
void LED_Application(uint16_t blinkNum,uint16_t delayTime)
{
uint16_t i=0;
if (blinkNum == 0){
LED_Open();
}
else{
while(i<blinkNum){
LED_Open();
UserDelay(delayTime);
LED_Close();
UserDelay(delayTime);
i++;
}
}
} |