初中生
最后登录1970-1-1
在线时间 小时
注册时间2023-12-16
|
内容是野火玩转stm32的教程“21-串口通信(第6节)”的作业,需求是“在串口调试助手中以十六进制发送”,以下是本人代码段,已调试无误。
中断服务函数
//串口中断服务函数点灯
void DEBUG_USARTx_IRQHandler(void)
{
//检查中断源是否正确
if(USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == SET)
{
uint8_t RecvData = USART_ReceiveData(DEBUG_USARTx);
printf("接收到的数字:%d\n", RecvData);
switch(RecvData)
{
case 0:
LED_R(ON);
LED_G(ON);
LED_B(ON);
break;
case 1:
LED_R(ON);
LED_G(OFF);
LED_B(OFF);
break;
case 2:
LED_R(OFF);
LED_G(ON);
LED_B(OFF);
break;
case 3:
LED_R(OFF);
LED_G(OFF);
LED_B(ON);
break;
default:
LED_R(OFF);
LED_G(OFF);
LED_B(OFF);
break;
}
}
//清除中断标志
USART_ClearITPendingBit(DEBUG_USARTx, USART_IT_RXNE); //可省略,USART_IT_RXNE在读取USARTx->DR后会硬件清零
}
主函数
int main(void)
{
//uint8_t ch = 0;
LED_GPIO_Config();
USART_Config();
printf("USART指令控制RGB彩灯\n");
while(1)
{;}
}
疑问:没太听懂火哥视频中说的要一个全局变量的作用,欢迎大佬交流指点!
|
|