【目的】實現(xiàn)UART發(fā)送命令控制板載LED燈
一、復制一份工種到新的文件夾:sudo cp -r cw32l031_uart cw32l031_uart_iqr,然后給新的文件夾賦予讀寫權(quán)限:sudo chmod 777 -R cw32l031_uart_iqr/
二、用VSCode打開該工程文件夾
三、在usre_uart.c中增加中斷的配置
NVIC_SetPriority(UART1_IRQn, 0); //優(yōu)先級,無優(yōu)先級分組
NVIC_EnableIRQ(UART1_IRQn); //UARTx中斷使能
四、修改中斷函數(shù)
主要的思路是:
1、如果進入了中斷,首先判斷是不是UART1的接收中斷,如果是則接收一個字節(jié)數(shù)的數(shù)據(jù)。
2、如果接收超過了最長長度,則計數(shù)歸零,如果接收到了’\\n’說明接收一次數(shù)據(jù)完成,更新標志位。
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主函數(shù)中,我們判斷是否接收完數(shù)據(jù),如果接收完數(shù)據(jù),則進來判斷,如果是LED_ON則點亮LED燈,如果是LED_OFF則關(guān)斷LED燈。
Main主函數(shù)代碼如下:
int main(void)
{
LED_Init();
LogInit();
USART_ITConfig(CW_UART1, USART_IT_RC, ENABLE);
InitTick(24000000ul); //初始化SysTick
// 開啟兩線調(diào)試接口
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;
}
實驗效果,發(fā)送LED_ON板載的LED亮,發(fā)送LED_OFF板載的LED關(guān)斷。同時打印出發(fā)送的內(nèi)容。
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
242文章
23614瀏覽量
669087 -
uart
+關(guān)注
關(guān)注
22文章
1251瀏覽量
102870 -
Ubuntu
+關(guān)注
關(guān)注
5文章
580瀏覽量
30656 -
GPIO
+關(guān)注
關(guān)注
16文章
1238瀏覽量
53309
發(fā)布評論請先 登錄
相關(guān)推薦
創(chuàng)建CW32L083GCC工程模板
首創(chuàng)ubuntu下cw32l031的vscode+gcc工程創(chuàng)建、下載、調(diào)試

【Ubuntu VSCODE+GCC】CW32L031實現(xiàn)printf工程

【產(chǎn)品介紹】32位低功耗MCU CW32L031系列產(chǎn)品介紹
首創(chuàng)CW32L083GCC工程模版
ubuntu下面用vscdoe實現(xiàn)CW32L031的工程創(chuàng)建、編譯、下載與調(diào)試
CW32L031產(chǎn)品介紹
CW32L031微控制器數(shù)據(jù)手冊
CW32L031用戶手冊
CW32L031微處理器用戶手冊
【產(chǎn)品介紹】32位低功耗MCU CW32L031系列產(chǎn)品介紹

評論