【Ubuntu VSCODE+GCC】CW32L031实现UART控制LED
【目的】实现UART发送命令控制板载LED灯
(资料图片仅供参考)
一、复制一份工种到新的文件夹:sudo cp -r cw32l031_uart cw32l031_uart_iqr,然后给新的文件夹赋予读写权限:sudo chmod 777 -R cw32l031_uart_iqr/
二、用VSCode打开该工程文件夹
三、在usre_uart.c中增加中断的配置
NVIC_SetPriority(UART1_IRQn, 0); //优先级,无优先级分组
NVIC_EnableIRQ(UART1_IRQn); //UARTx中断使能
四、修改中断函数
主要的思路是:
1、如果进入了中断,首先判断是不是UART1的接收中断,如果是则接收一个字节数的数据。
2、如果接收超过了最长长度,则计数归零,如果接收到了’\\n’说明接收一次数据完成,更新标志位。
3、清除接收标志位。
void UART1_IRQHandler(void)
{
/* USER CODE BEGIN */if(USART_GetITStatus(CW_UART1, USART_IT_RC) != RESET) // 获取UARTx中断标志位{ rx_buff[rx_cnt] = USART_ReceiveData_8bit(CW_UART1); //如果接收达到上限,则回到0 if(rx_buff[rx_cnt] == "\\n") { rx_state = 1; } if(rx_cnt < UART_RX_MAX_LEN) { rx_cnt ++; } else { rx_cnt = 0; } USART_ClearITPendingBit(CW_UART1, USART_IT_RC);}/* USER CODE END */
}
五、要main主函数中,我们判断是否接收完数据,如果接收完数据,则进来判断,如果是LED_ON则点亮LED灯,如果是LED_OFF则关断LED灯。
Main主函数代码如下:
int main(void)
{
LED_Init();LogInit();USART_ITConfig(CW_UART1, USART_IT_RC, ENABLE);InitTick(24000000ul); //初始化SysTick// 开启两线调试接口RCC_SWDIO_Config(RCC_SYSCTRL_SWDIOEN);printf("start\\r\\n");while (1){ if(rx_state == 1) { printf("recv: %s\\r\\n", rx_buff); rx_state = 0; rx_cnt = 0; if (rx_buff[0] == "L" && \\ rx_buff[1] == "E" && \\ rx_buff[2] == "D" && \\ rx_buff[3] == "_" && \\ rx_buff[4] == "O" && \\ rx_buff[5] == "N" ) { GPIO_WritePin(CW_GPIOC, GPIO_PIN_13, GPIO_Pin_RESET); } else if (/* condition */rx_buff[0] == "L" && \\ rx_buff[1] == "E" && \\ rx_buff[2] == "D" && \\ rx_buff[3] == "_" && \\ rx_buff[4] == "O" && \\ rx_buff[5] == "F" && \\ rx_buff[6] == "F" ) { GPIO_WritePin(CW_GPIOC, GPIO_PIN_13, GPIO_Pin_SET); } memset(rx_buff, 0, UART_RX_MAX_LEN); } // GPIO_TogglePin(CW_GPIOC, GPIO_PIN_13); SysTickDelay(10);}return 0;
}
实验效果,发送LED_ON板载的LED亮,发送LED_OFF板载的LED关断。同时打印出发送的内容。
审核编辑:汤梓红
标签:
相关阅读
-
【Ubuntu VSCODE+GCC】CW32L031实现UART控制LED
ubuntu系统下面使用vscode使用串口驱动实现对板载LED灯的控制。 -
T&G全球有限公司积极耕耘中国市场 保护...
中国农科新闻网是农业科技报社顺应网络时代新媒体发展趋势,在三农领域 -
龙元建设(600491)龙虎榜数据(06-28)
沪深交易所2023年06月28日公布的交易公开信息显示,龙元建设因成为当日 -
信用中国上的公司诉讼记录怎么消除_每日...
关于信用修复的理解,目前主要分为两种:一种认为信用修复是信用行 -
环球热消息:陇东学院召开“三抓三促”...
6月27日,陇东学院召开“三抓三促”行动工作推进会。党委委员、纪委... -
全球观察:小车间,大帮扶!椿树这个村...
中国农科新闻网是农业科技报社顺应网络时代新媒体发展趋势,在三农领域