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

本文介绍了在雅特力F423系列MCU上使用RTX实时操作系统进行开发,包括RTX的简单启动过程和添加SHELL接口以实现串口调试。还提供了相关代码示例和可供测试的工程源码。
摘要由CSDN通过智能技术生成

感谢雅特力及21IC论坛提供开发板进行评测学习。F423系列芯片外设资源十分丰富,DAC,USB-OTG,CAN控制器应有尽有,256K/48K存储满足大多数仪表产品开发应用。
 


1、作为资源丰富的MCU,要充分发挥MCU实时性,使用操作系统是最好的选择,本次测试采用RTX系统,arm官方出品,是当前arm芯片上可用的速度最快的RTOS。
项目添加如下文件即可:
 


RTX的启动十分简单,如下所示:

复制

 osKernelInitialize(); // Initialize CMSIS-RTOS



        thread_init();



        if (osKernelGetState() == osKernelReady)

        {

                osKernelStart(); // Start thread execution

        }



        while (1)

        {

        }

2、为了调试方便,给程序添加一个SHELL接口,可以通过串口进行人机交互。底层移植主要是串口初始化和数据收发:

复制

static void com_hal_init(uint8_t comMode, uint32_t ulBaudRate, com_parity_type eParity)

{

        uint32_t us10TimerSv;

        uint32_t ClocksPer2ms;

        usart_data_bit_num_type dat_bits;

        usart_stop_bit_num_type stop_bits;

        usart_parity_selection_type parity;



        com_pin_cfg();



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



        if (eParity == COM_PAR_ODD)

        {

                dat_bits = USART_DATA_9BITS;

                stop_bits = USART_STOP_1_BIT;

                parity = USART_PARITY_ODD;

        }

        else if (eParity == COM_PAR_EVEN)

        {

                dat_bits = USART_DATA_9BITS;

                stop_bits = USART_STOP_1_BIT;

                parity = USART_PARITY_EVEN;

        }

        else if (eParity == COM_PAR_NONE_2S)

        {

                dat_bits = USART_DATA_8BITS;

                stop_bits = USART_STOP_2_BIT;

                parity = USART_PARITY_NONE;

        }

        else

        {

                dat_bits = USART_DATA_8BITS;

                stop_bits = USART_STOP_1_BIT;

                parity = USART_PARITY_NONE;

        }



        // 11*3.5*(1E6)/ba/50 = 77*1E4/ba

        if (ulBaudRate > 19200)

        {

                ClocksPer2ms = 1800 * ulBaudRate / 1000000 + 1;



                if (ClocksPer2ms < 41)

                        ClocksPer2ms = 41;

                else if (ClocksPer2ms > 255)

                        ClocksPer2ms = 255;

                // TOI 时间设置

        }

        else

        {

                // Time-out Register ,TX-DLY=0, TX-TIMEOUT=40

                // TOI 时间设置

        }



        // 报文通知延时

        us10TimerSv = com_timer_cal(ulBaudRate, 11 * 5, 300, 20000);

        ComObj.rcv_end_time_sv = us10TimerSv / 100;



        if (comMode > 0)

        {

                ComObj.rcv_end_time_sv++;

        }



        usart_init(comPORT, ulBaudRate, dat_bits, stop_bits);

        usart_parity_selection_config(comPORT, parity);

        usart_enable(comPORT, TRUE);



        nvic_irq_set(COM_IRQn, 0x06, 1);



        com_fun_init(comMode);



        com_rx_enable(TRUE);



        UART_TX_EN();

}

SHELL测试结果如下:
 



下面附上工程源码,有兴趣的小伙伴可以下载测试:
 

 AT32F423_EVAL-LED.rar (4.54 MB)。
---------------------
作者:aple0807
链接:https://bbs.21ic.com/icview-3336484-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值