[AT32F423] 【AT-START-F423测评】开箱测试+SHELL

[复制链接]
1423|0
 楼主| aple0807 发表于 2023-10-27 20:38 | 显示全部楼层 |阅读模式
感谢雅特力及21IC论坛提供开发板进行评测学习。F423系列芯片外设资源十分丰富,DAC,USB-OTG,CAN控制器应有尽有,256K/48K存储满足大多数仪表产品开发应用。
34b2c815bb5e0b9420499976015aa57.jpg
1、作为资源丰富的MCU,要充分发挥MCU实时性,使用操作系统是最好的选择,本次测试采用RTX系统,arm官方出品,是当前arm芯片上可用的速度最快的RTOS。
项目添加如下文件即可:
RTX.png
RTX的启动十分简单,如下所示:
  1. osKernelInitialize(); // Initialize CMSIS-RTOS

  2.         thread_init();

  3.         if (osKernelGetState() == osKernelReady)
  4.         {
  5.                 osKernelStart(); // Start thread execution
  6.         }

  7.         while (1)
  8.         {
  9.         }
2、为了调试方便,给程序添加一个SHELL接口,可以通过串口进行人机交互。底层移植主要是串口初始化和数据收发:
  1. static void com_hal_init(uint8_t comMode, uint32_t ulBaudRate, com_parity_type eParity)
  2. {
  3.         uint32_t us10TimerSv;
  4.         uint32_t ClocksPer2ms;
  5.         usart_data_bit_num_type dat_bits;
  6.         usart_stop_bit_num_type stop_bits;
  7.         usart_parity_selection_type parity;

  8.         com_pin_cfg();

  9.         set_u8(&ComObj, 0, sizeof(ComObj));

  10.         if (eParity == COM_PAR_ODD)
  11.         {
  12.                 dat_bits = USART_DATA_9BITS;
  13.                 stop_bits = USART_STOP_1_BIT;
  14.                 parity = USART_PARITY_ODD;
  15.         }
  16.         else if (eParity == COM_PAR_EVEN)
  17.         {
  18.                 dat_bits = USART_DATA_9BITS;
  19.                 stop_bits = USART_STOP_1_BIT;
  20.                 parity = USART_PARITY_EVEN;
  21.         }
  22.         else if (eParity == COM_PAR_NONE_2S)
  23.         {
  24.                 dat_bits = USART_DATA_8BITS;
  25.                 stop_bits = USART_STOP_2_BIT;
  26.                 parity = USART_PARITY_NONE;
  27.         }
  28.         else
  29.         {
  30.                 dat_bits = USART_DATA_8BITS;
  31.                 stop_bits = USART_STOP_1_BIT;
  32.                 parity = USART_PARITY_NONE;
  33.         }

  34.         // 11*3.5*(1E6)/ba/50 = 77*1E4/ba
  35.         if (ulBaudRate > 19200)
  36.         {
  37.                 ClocksPer2ms = 1800 * ulBaudRate / 1000000 + 1;

  38.                 if (ClocksPer2ms < 41)
  39.                         ClocksPer2ms = 41;
  40.                 else if (ClocksPer2ms > 255)
  41.                         ClocksPer2ms = 255;
  42.                 // TOI 时间设置
  43.         }
  44.         else
  45.         {
  46.                 // Time-out Register ,TX-DLY=0, TX-TIMEOUT=40
  47.                 // TOI 时间设置
  48.         }

  49.         // 报文通知延时
  50.         us10TimerSv = com_timer_cal(ulBaudRate, 11 * 5, 300, 20000);
  51.         ComObj.rcv_end_time_sv = us10TimerSv / 100;

  52.         if (comMode > 0)
  53.         {
  54.                 ComObj.rcv_end_time_sv++;
  55.         }

  56.         usart_init(comPORT, ulBaudRate, dat_bits, stop_bits);
  57.         usart_parity_selection_config(comPORT, parity);
  58.         usart_enable(comPORT, TRUE);

  59.         nvic_irq_set(COM_IRQn, 0x06, 1);

  60.         com_fun_init(comMode);

  61.         com_rx_enable(TRUE);

  62.         UART_TX_EN();
  63. }
SHELL测试结果如下:
shell.png

下面附上工程源码,有兴趣的小伙伴可以下载测试:
AT32F423_EVAL-LED.rar (4.54 MB, 下载次数: 8)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

326

帖子

2

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