YangTwo 发表于 2022-11-7 15:25

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

本帖最后由 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 = TempChar;
      else
            break;
    }
    MyRx = '\0';
      
    if(MyRx != '\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及其商标
页: [1]
查看完整版本: 【CuriosityNano测评报告】AVR64DD32 - UART数据回显