【目的】實(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文章
23312瀏覽量
661664 -
uart
+關(guān)注
關(guān)注
22文章
1240瀏覽量
101500 -
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29879 -
GPIO
+關(guān)注
關(guān)注
16文章
1213瀏覽量
52184
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
創(chuàng)建CW32L083GCC工程模板
首創(chuàng)ubuntu下cw32l031的vscode+gcc工程創(chuàng)建、下載、調(diào)試
![首創(chuàng)<b class='flag-5'>ubuntu</b>下<b class='flag-5'>cw32l031</b>的<b class='flag-5'>vscode+gcc</b>工程創(chuàng)建、下載、調(diào)試](https://file1.elecfans.com/web2/M00/8B/67/wKgZomSYPFWAQ2mDAAffvzcfJL8523.png)
【Ubuntu VSCODE+GCC】CW32L031實(shí)現(xiàn)printf工程
![【<b class='flag-5'>Ubuntu</b> <b class='flag-5'>VSCODE+GCC</b>】<b class='flag-5'>CW32L031</b><b class='flag-5'>實(shí)現(xiàn)</b>printf工程](https://file1.elecfans.com/web2/M00/8B/9E/wKgZomSb96GAeayoACoxRKg2JSs539.png)
Ubuntu VSCODE+GCC】CW32L031驅(qū)動(dòng)sht30
![<b class='flag-5'>Ubuntu</b> <b class='flag-5'>VSCODE+GCC</b>】<b class='flag-5'>CW32L031</b>驅(qū)動(dòng)sht30](https://file1.elecfans.com/web2/M00/8B/A0/wKgaomSb-TSAYOcnACFSxikIri4292.png)
武漢芯源CW32L031實(shí)現(xiàn)超遠(yuǎn)距離超低耗無(wú)線采集
![武漢芯源<b class='flag-5'>CW32L031</b><b class='flag-5'>實(shí)現(xiàn)</b>超遠(yuǎn)距離超低耗無(wú)線采集](https://file1.elecfans.com/web2/M00/8B/C7/wKgZomSeik-AD89HAB5SViPilyQ687.png)
【產(chǎn)品介紹】32位低功耗MCU CW32L031系列產(chǎn)品介紹
首創(chuàng)CW32L083GCC工程模版
ubuntu下面用vscdoe實(shí)現(xiàn)CW32L031的工程創(chuàng)建、編譯、下載與調(diào)試
CW32L031產(chǎn)品介紹
CW32L031微控制器數(shù)據(jù)手冊(cè)
CW32L031用戶手冊(cè)
CW32L031微處理器用戶手冊(cè)
【產(chǎn)品介紹】32位低功耗MCU CW32L031系列產(chǎn)品介紹
![【產(chǎn)品介紹】32位低功耗MCU <b class='flag-5'>CW32L031</b>系列產(chǎn)品介紹](https://file.elecfans.com/web2/M00/6A/6D/pYYBAGMj4G-AVzxiAAAu4EdQmpw316.png)
評(píng)論