while (1);
}
主程序中只进行外设初始化和中断使能,接收字符和回传因为时间极短,可以都在中断服务程序中处理:使用字符型变量c保存使用usart_data_receive()接收到的数据,然后再使用usart_data_transmit()发送出去(每次发送数据帧,需要等待USART_FLAG_TBE置位后再发送下一帧)。
[size=0.85em]void UART4_IRQHandler(void)
{
if (RESET != usart_interrupt_flag_get(UART4, USART_INT_FLAG_RBNE))
{
uint8_t c = usart_data_receive(UART4);
usart_data_transmit(UART4, c);
while (SET != usart_flag_get(UART4, USART_FLAG_TBE));
}
}
实验2:控制板载RGB LED 实验2是通过PC主机向RV-STAR的串口发送'r','g','b'三种不同的字符,用以控制RV-STAR的板载RGB LED产生不同的亮光。和实验1的回传字符程序不同的地方是,实验2的代码里使用了一个char类型的全局变量led_color作为主程序和中断服务程序的桥梁,用于存储在中断服务程序中接收到的字符,然后在主程序的循环体中调用函数,据此变量改变led的状态。完整代码请参考: