2623|5

58

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[ 雅特力AT-START-F421]评测 移植RTT [复制链接]

 

            跳过开箱神马的直入主题,文档入门手册神马官方给的很全了,包装盒,板子实物照片,板子功能标识直接截的官方手册里的.

       

        官方包中有IAR和MDK的支持包,用法官方文档也写了,这里不再阐述.附官网地址雅特力  OK

        接下来先移植下RT-Thread吧.虽然官方也给了FreeRTOS的demo参考.

        先介绍下RT-Thread吧!  RT-Thread是一个优秀的国产RTOS,免费,开源,代码可剪裁,且有丰富的硬件驱动和配套的柿饼UI界面.

          这里我是基于官方UART例程中,printf工程移植的.使用MDK.有两种方法移植.第一种去RTT官网或Gitee或Github下载源代码,附官网链接.RT-Thread.org,然后只提取需要的文件到MDK工程中,然后就是在MDK中新建组和添加文件了.还有简单的第二种,可以直接在MDK的pack installer中安装RTT包,然后manage run-time environment中勾选就行了.不论哪一种到这里RTT代码已经添加到工程中了.接下来做的都一样了.

          先编译一下吧!这里会有三个报错,这是因为RTT在内部已经实现了hardfault_handler,pendsv_handler,和systick_handler这三个函数,所以要把it.c中的这三个函数删掉.再编译就没错了.

        此外uart初始化要在board.c中void rt_hw_board_init()函数中初始化,main.c里的要删除.还需要在board.c添加.h,如下图:main.c中添加#include <rtthread.h>

        board.c中还需要重写void rt_hw_console_output(const char *str)函数以实现串口打印,

		/*实现 finsh 组件输出一个字符*/
void rt_hw_console_output(const char *str)
{
    rt_size_t i = 0, size = 0;
    char a = '\r';

    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
            USART_SendData(AT32_PRINT_UART,a);
        }
       USART_SendData(AT32_PRINT_UART,*(str + i));
			 while ( USART_GetFlagStatus(AT32_PRINT_UART, USART_FLAG_TRAC) == RESET );  
    }
}

      因为用了rtos,main就变成了它的一个线程,所以while(1)里一定要有释放CPU的操作,否则调度器就无法切换.如下:

int main(void)
{     


  while (1)
  {
	 	rt_kprintf("ARTERY\n");
		rt_kprintf("AT32F421\n");
		return 0;
  }
}

        到这里基本就已移植完成,编译一下,无报错就可以烧录了,link配置方法官方文档里也有详细说明.串口打印信息如下:

        板卡link已虚拟一个串口并连接到uart1,串口助手配置好后,复位一下就可以看到打印信息.到此说明RTT已移植成功.

 

        我把官方F421的文档整理了一下附上文档,官方文档还是很齐全仔细的.

        AT_F421_Doc.7z

微信图片_20210408222652.jpg (351.82 KB, 下载次数: 0)

微信图片_20210408222652.jpg

pack.PNG (527.34 KB, 下载次数: 0)

pack.PNG

bo.PNG (627.32 KB, 下载次数: 0)

bo.PNG

芯片包.PNG (76.89 KB, 下载次数: 0)

芯片包.PNG

rtos.PNG (174.71 KB, 下载次数: 0)

rtos.PNG

mdk.PNG (323.48 KB, 下载次数: 0)

mdk.PNG

再次编译.PNG (276.3 KB, 下载次数: 0)

再次编译.PNG

board.PNG (160.57 KB, 下载次数: 0)

board.PNG

com.PNG (78.55 KB, 下载次数: 0)

com.PNG

AT_F421_Doc.7z

10.47 MB, 下载次数: 62

最新回复

nmg
帖子里图片太神奇了,小的啊,你是从word里粘贴复制形式发帖吗? 给我一下你的word,论坛现在正在测试这块的功能   详情 回复 发表于 2021-4-14 16:57

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

谢谢分享

为什么要把hardfault_handler,pendsv_handler,和systick_handler这三个函数,所以要把it.c中的这三个函数删掉呢

点评

因为RTT内部已经实现了这三个函数,不删掉会报错  详情 回复 发表于 2021-4-9 22:43
 
 
 

回复

267

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

排版有点乱~

个人签名

gitee/casy

 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

4
 
Jacktang 发表于 2021-4-9 13:27 谢谢分享 为什么要把hardfault_handler,pendsv_handler,和systick_handler这三个函数,所以要把it.c中的 ...

因为RTT内部已经实现了这三个函数,不删掉会报错

 
 
 

回复

1942

帖子

2

TA的资源

版主

5
 

感谢分享!只尝试过FreeRTOS的移植。RTT的移植还没试过~

 
 
 

回复

5263

帖子

239

TA的资源

管理员

6
 

帖子里图片太神奇了,小的啊,你是从word里粘贴复制形式发帖吗?

给我一下你的word,论坛现在正在测试这块的功能

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表