中斷函式是這樣 void DEBUG_USART_IRQHandler(void)
{
uint8_t ucTemp;
if(USART_GetiTStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
ucTemp = USART_ReceiveData(DEBUG_USARTx);
time = ucTemp;
TIM_SetCompare1( GENERAL_TIM , time);
USART_SendData(DEBUG_USARTx,time);
}
}
主函式是這樣
int main(void)
{
USART_Config();
GENERAL_TIM_Init();
while(1){
} }
用串口助手第一次輸入數字改變占空比時舵機會動,之后輸入就沒反應了,但是螢屏上還是列印出中斷請求列印的數字,請問是為什么呢?
uj5u.com熱心網友回復:
占空比變沒變?uj5u.com熱心網友回復:
占空比有沒有變,用示波器測吧。另外
這兩句最好不要放在
TIM_SetCompare1( GENERAL_TIM , time);
USART_SendData(DEBUG_USARTx,time);
里執行。
void DEBUG_USART_IRQHandler(void)
uj5u.com熱心網友回復:
是不是中斷里面的時間太常了uj5u.com熱心網友回復:
中斷里沒有清除標記位啊uj5u.com熱心網友回復:
getITflagstatus不是會自動清除標志位么
uj5u.com熱心網友回復:
你最好在中斷里面弄個標記位去判斷然后在其它地方寫個子函式根據標記位去改變占空比,終端里面最好不要執行一些復雜的操作。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/44058.html
標籤:單片機/工控
上一篇:STM32 HAL庫正交解碼
下一篇:求助
