【目的】實(shí)現(xiàn)UART發(fā)送命令控制板載LED燈
一、復(fù)制一份工種到新的文件夾: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)先級(jí),無(wú)優(yōu)先級(jí)分組
NVIC_EnableIRQ(UART1_IRQn); //UARTx中斷使能
四、修改中斷函數(shù)
主要的思路是:
1、如果進(jìn)入了中斷,首先判斷是不是UART1的接收中斷,如果是則接收一個(gè)字節(jié)數(shù)的數(shù)據(jù)。
2、如果接收超過(guò)了最長(zhǎng)長(zhǎng)度,則計(jì)數(shù)歸零,如果接收到了’\\n’說(shuō)明接收一次數(shù)據(jù)完成,更新標(biāo)志位。
3、清除接收標(biāo)志位。
void UART1_IRQHandler(void)
{
/* USER CODE BEGIN */
if(USART_GetITStatus(CW_UART1, USART_IT_RC) != RESET) // 獲取UARTx中斷標(biāo)志位
{
rx_buff[rx_cnt] = USART_ReceiveData_8bit(CW_UART1);
//如果接收達(dá)到上限,則回到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ù),則進(jìn)來(lái)判斷,如果是LED_ON則點(diǎn)亮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;
}
實(shí)驗(yàn)效果,發(fā)送LED_ON板載的LED亮,發(fā)送LED_OFF板載的LED關(guān)斷。同時(shí)打印出發(fā)送的內(nèi)容。
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
242文章
23277瀏覽量
660842 -
uart
+關(guān)注
關(guān)注
22文章
1235瀏覽量
101387 -
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29755 -
GPIO
+關(guān)注
關(guān)注
16文章
1204瀏覽量
52090
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論