打印
[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】AVR64DD32 - UART数据回显

[复制链接]
4682|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
YangTwo|  楼主 | 2022-11-7 15:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 YangTwo 于 2022-11-7 15:25 编辑

非常感谢论坛提供的这次体验AVR单片机的机会,这次的主控芯片是:AVR64DD32,属于AVR DD系列。该系列以AVR架构的低功耗性能为基础,采用世界级的核心独立外设(CIPs)选择和全负载智能模拟组合,功能强大。

此外,AVR DD系列具有全面的功能集,包括多电压输入/输出(MVIO),非常适合复杂的应用,或作为具有多个电源域的复杂设计中的配套微控制器(MCU)。


官方Github提供了非常丰富的例程用于快速上手:Curiosity Nano Out-of-the-Box Code using AVR64DD32 Microcontroller with MCC Melody。
本次工程在此基础上增加了串口回显的程序,用户可以通过串口发送1, 2, 3, 4 来决定进入哪个子程序。

第一步增加第四种程序模式:UART_SENDBACK即本工程的核心
typedef enum {BLINKY, BUTTON, RAMP, UART_SENDBACK} programs_t;

第二步增加Switch-case语句相关分支:
        case '4':
            LED_SetHigh();
            current_program = UART_SENDBACK;
            printf("Program changed to send string back to PC through USART\r\n");
            break;


第三步是串口回显的核心代码:
static void Send_DataBack2PC_UART(void){
    uint8_t i = 0;
    unsigned char TempChar = USART0_Read();
    memset(MyRx, 0, sizeof(MyRx));
    //while(((TempChar = USART0_Read()) != 32)&&((TempChar = USART0_Read()) != '\n'));
   
    if(TempChar == '1' || TempChar == '2' || TempChar == '3'){
        CLI_Execute_Command(TempChar);
        return;
    }
    while((TempChar = USART0_Read()) != '\0'){
        if(TempChar != '\n')
            MyRx[i++] = TempChar;
        else
            break;
    }
    MyRx[i] = '\0';
        
    if(MyRx[0] != '\0'){
        printf("SendBacktoPC: %s\r\n", MyRx);
    }
    i = 0;   
}
首先,我们对串口发来的字符串的第一个字符进行检测,如果是1,2,3则需要立即结束该子程序,因为1,2,3,4是用来控制进入哪个子程序的。如果不是1,2,3,继续往下执行。


最后是串口回显的结果展示:



使用特权

评论回复
沙发
pzsh| | 2022-11-8 14:30 | 只看该作者
打印了一个Microchip及其商标

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

101

帖子

1

粉丝