[NXP MIMXRT1052] [01]正点原子号令者上手-啊哦

正点原子的板子不是第一次玩了,NXP的单片机是第一次玩儿,直接上。
正点原子官网连接下载开发板资料包。
拷贝出来标准库函数的实验0 新建工程实验,重命名为CommanderFirmware_v0.0.0
keil5是已经装好了的,直接打开工程,下载安装相关package。
正点原子的DAP研究了10分钟驱动装不上,不让我手动搜资料包里面的inf,不知何解,Jlink应该可以用,略过。

这个工程很简单,初始化了MPU、系统时钟、delay、串口1,一个cnt变量每500ms自增并且打印。

程序是LPUART1输出,不清楚这个打印是从哪个串口出去的,板子上有个RS232 9针的串口,我要把输出调整到这里。原因么,就是我觉得这里更像是给我用来调试输出的地方,个人喜好,仅此而已。先把RS232转USB插上。
Jlink和232转usb都枚举正常硬件准备完毕。

首先确认PCB丝印是COM4,然后去找开发板原理图,找原理图的时候瞄到一个《号令者RT1052开发板IO引脚分配表.xlsx》看样子比原理图直观,打开直接搜COM4,有惊喜,很清楚:需要P8跳帽调整一下,速度搞定,同时注意到Tx GPIO名字GPIO_SD_B1_00属于UART4,RX略同。

接下来改程序。找到main,找到Lpuart1_Init();跳转到定义,跳不过去,以为是工程设置里面的Output里面的Browser Infomation没有启用,打开一看是选中的,那么原因只是非常纯粹的没有编译,Build,不得不吐槽,这东西带着这个选项编译怎么还是这么慢!

编译完成,没有w和e。main.c同路径下新建systemconfig.h,给全局宏定义准备个窝。这个文件是为了便于维护,避免后面其他同事找个IO定义的时候满工程搜,搜到还不敢改,改了还要诚惶诚恐的测试,我喜欢规定好这个文件,要找都来这里找。直接包含到lpuart.c里面去。systemconfig.h一边改代码一边加,最后变成这样(这个代码的tab和keil不一样,代码里宏定义的值是对齐的):

#ifndef __SYSTEMCONFIG_H__
#define __SYSTEMCONFIG_H__

/* Debugprint UART */
#define DBGPRINTUART      					   LPUART4
#define DBGPRINTUART_CLOCK					kCLOCK_Lpuart4
#define DBGPRINTUART_MUX_TX					IOMUXC_GPIO_SD_B1_00_LPUART4_TX
#define DBGPRINTUART_MUX_RX					IOMUXC_GPIO_SD_B1_01_LPUART4_RX
#define DBGPRINTUART_IRQn						LPUART4_IRQn
#define DBGPRINTUART_IRQn_prep			(5U)
#define DBGPRINTUART_IRQn_subp			(0U)

#endif /* __SYSTEMCONFIG_H__ */

期间遇到的问题,

IOMUXC_SetPinMux(DBGPRINTUART_MUX_TX,0U);

这个函数第二个参数不知道是什么意义,看头文件解释:

 * @param inputOnfield   Software input on field.
 */
static inline void IOMUXC_SetPinMux(uint32_t muxRegister,
                                    uint32_t muxMode,
                                    uint32_t inputRegister,
                                    uint32_t inputDaisy,
                                    uint32_t configRegister,
                                    uint32_t inputOnfield)
	 *((volatile uint32_t *)muxRegister) =
        IOMUXC_SW_MUX_CTL_PAD_MUX_MODE(muxMode)
         | IOMUXC_SW_MUX_CTL_PAD_SION(inputOnfield);

(⊙o⊙)… 还是没能李姐,查下这个寄存器的定义,说实话,刚结束NXP的ref还真是没摸到它的门,直接按照外设比如iomux来找其实不是很好找,后来发现竟然可以通过代码的寄存器地址直接定位,有点神奇:从上面代码里面的muxRegister知道要找IOMUXC_SetPinMux的第一个参数:

#define IOMUXC_GPIO_SD_B1_00_LPUART4_TX 0x401F81D4U, 0x4U, 0x401F8544U, 0x0U, 0x401F83C4U

就是0x401F81D4U,我也是抱着试试的心态直接在参考手册里面搜了下81d4,就在目录里面定位到了:

然后点击链接,就有了:

Force the selected mux mode Input path no matter of MUX_MODE functionality.

好吧,不论muxmode配置成什么,强制选择为输入。我没有理解NXP设计的意图,后面再慢慢理解吧。
F8下载,失败,没有找到DAP,不好意思用的jlink,工程设置Debugger改成jlink,旁边的setting进去,没有找到cpu,忘记给板子上电了,开启电源,顺利找到cpu,download里面看看,果然没有flash,下面点击add,出现列表第二个Norflash8M就它了,确定退出,F8,刷刷刷,屏幕上什么也没发生。当然,串口助手都没开,没得看,关闭电源,打开串口助手,选择rs23,打开,很顺利。不得不说这其实是是我偏爱232的原因,就是只要我插着串口线主板没电,这个232的链接也是在的,如果用常规的usb我可能调试的过程中会意外在调试助手开着com通道的时候拔掉串口线,基本上只有强行关机才能回复usb了。
打开电源,f1,f2.。。这是啥,一脸懵,我钟爱的hello怎么没有,多么缺乏仪式感!
该代码,成hello RT1052!编译下载:

[20:21:57.325] Hello RT1052!

yes! 这样才完美!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值