[APM32E0] 【APM32E030R Micro-EVB开发板评测】——使用串口点灯(高级操作)

[复制链接]
57|2
龙鳞铁碎牙 发表于 2025-8-29 18:25 | 显示全部楼层 |阅读模式
很荣幸收到了极海电子赠送的APM32E030R Micro-EVB开发板,本次我试用串口来进行点灯,进行非常有深度的点灯,不像某些人直接点灯很没意思和技术深度!!!


工作原理就是使用串口助手上发送指令,通过APM32E030R Micro-EVB的USART1来进行指令的解析,然后点灯操作,这个涉及到串口通讯协议了,不是单纯的点灯。我说的是什么意思,懂得都懂,不解释!!
1.先打开原理图
110368b17cd90a630.png

可以看到LED2和LED3分别对应的是PB6个PB7,这是可以编程控制的,高电平熄灭,低电平点亮,不解释!!!!
2.核心代码如下
7081168b17d3c26f36.png


void shell_process(void)
{
    if(user_uart_wait_receive() == REV_OK)       
        {
                if(strcmp(U1_RxBuff,"LED2_ON") == 0)
                {
                  APM_TINY_LEDOn(LED2);
                  printf("Led2 点亮!\n");
                }
                else if(strcmp(U1_RxBuff,"LED2_OFF") == 0)
                {
                  APM_TINY_LEDOff(LED2);
                  printf("Led2 熄灭!\n");
                }
                else if(strcmp(U1_RxBuff,"LED3_ON") == 0)
                {
                  APM_TINY_LEDOn(LED3);
                  printf("Led3 点亮!\n");
                }
                else if(strcmp(U1_RxBuff,"LED3_OFF") == 0)
                {
                  APM_TINY_LEDOff(LED3);
                  printf("Led3 熄灭!\n");
                }
                else if(strcmp(U1_RxBuff,"LED_ON") == 0)
                {
                  APM_TINY_LEDOn(LED2);APM_TINY_LEDOn(LED3);
                  printf("Led2 Led3 全亮!\n");
                }
                else if(strcmp(U1_RxBuff,"LED_OFF") == 0)
                {
                  APM_TINY_LEDOff(LED2);APM_TINY_LEDOff(LED3);
                  printf("Led2 Led3 全灭!\n");
                }

                user_uart_clear();
    }
        HAL_Delay(10);
}

3.串口接收中断函数
1282968b17d661afa7.png


void  USART_Receive_Isr(void)
{
    uint8_t dat;

    if (USART_ReadStatusFlag(TINY_COM1, USART_FLAG_RXBNE) == SET)
    {
        dat = (uint8_t)USART_RxData(TINY_COM1);
       
                if(U1_Rxlen >= sizeof(U1_RxBuff))        U1_Rxlen = 0; //防止串口被刷爆
                U1_RxBuff[U1_Rxlen++] = dat;

        //printf("%c", ReceiveTmp);
    }
}

4.主函数直接调用shell即可
3547168b17d8a93992.png

5.编译烧录代码到板子
6922968b17da355dbb.png

6.打开串口助手
1.板子上LED2和LED3是熄灭的
上面亮的是LED1
3730968b17e18edfb0.jpg

2.发送LED_ON,LED2和LED3全亮
1959868b17e52865ab.jpg 2066168b17e5a21d0e.png

3.发送LED_OFF , LED2 LED3全灭
9150968b17e93f28f1.jpg 1683368b17e9f6d89c.png

4.发送LED2_ON, LED2亮
8678268b17ef38b072.jpg 8364668b17efbba33f.png

5.发送LED2_OFF , LED2熄灭
4712568b17f383ea11.jpg 2944768b17f426b9ec.png

6.发送LED3_ON,LED3亮
4301668b17f744e783.jpg 9152068b17f7aec720.png

7.发送LED3_OFF,LED3熄灭
5592768b17fa606f45.jpg 1070868b17fad00db5.png

满足实验现象。

附件是hex文件,大家烧录即可验证

USART_Interrupt.zip

2.79 KB, 下载次数: 0

串口点灯烧录hex程序

霜咬回响 发表于 2025-8-30 15:16 | 显示全部楼层
楼主牛X,直接支持中文命令了
 楼主| 龙鳞铁碎牙 发表于 2025-8-30 15:51 | 显示全部楼层
必须的,不然,我没必要点灯,点灯太低级了,核心是串口通信
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部