` 本帖最后由 apleilx 于 2020-8-23 22:42 编辑
感谢 大联大和elecfans提供的rt1052评估板,板载资源十分丰富。Rt1052以600MHz的M7核心提供强大的处理能力,内核配置32K I-cache和32K D-cache大大降低了flash及外部ram访问速度的瓶颈,如虎添翼。 内部512RAM可自由配置 ITCM,DTCM以及外设共享RAM,应用十分灵活。 接下来介绍本次项目,rtthread+ modbus调试。
1、 首先准备所需软件资源,到恩智浦官网下载SDK以及github下载最新版的rt-thread包。 2、 rt-thread包解压后打开bsp目录,保留imxrt文件夹,其余全部删除。在imxrt中找到MIMXRT1050目录,内容替换为官方SDK的最新文件,否则部分新特性不能用。Rtt中原本的启动文件要保留,这个在链接文件中有使用。另外rtt默认用的是 ARMcc5编译,官方新 版SDK中的启动文件只能在armcc6中编译,这个应该是官方sdk的以后的标配了,毕竟armcc6比armcc5编译速度快太多,对于大型项目来说编译速度很影响项目进展速度。这样替换好文件之后,操作系统环境就算是配置完成了,将工程打开编译下载就可以运行。 3、 接下来添加modbus,创建modbus任务,将编译好的可以支持多通道的modbus库添加到工程,编写串口底层文件及定时器管理文件。本项目使用板载arduino的uart3端口进行调试。 引脚配置很简单,和之前用过的LPC4357类似。
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_AD_B1_06_LPUART3_TX, /* GPIO_AD_B0_12 is configured as LPUART1_TX */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_AD_B1_07_LPUART3_RX, /* GPIO_AD_B0_13 is configured as LPUART1_RX */
- 0U);
复制代码
代码不多贴了,整个工程上传到附件。想一起学习的同学可以下载来测试交流。
需要注意的一点,中断退出前必须执行SDK_ISR_EXIT_BARRIER,该宏在新版库中定义,2018版本的没有。这个宏用于数据同步,否则会出现莫名其妙的中断。猜测可能与高速流水线有关,清中断指令已经加入流水线,但还未执行就已经退出中断服务程序。
下面看演示结果: 硬件连接
|