[应用方案]

【NuMaker-M471测评】二:从模板工程熟悉新唐的库操作

[复制链接]
6131|19
手机看帖
扫描二维码
随时随地手机跟帖
数码小叶|  楼主 | 2021-8-8 21:35 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 2021-8-8 21:34 编辑

从官网给的地址中,下载了板子的BSP包,里面有三个文件夹,Document、Library、SampleCode。虽然第一次接触新唐,但是看到了Library文件,就意味着支持库操作
Snipaste_2021-08-04_21-38-35.png

在demo里,看到了模板工程,那就从模板工程开始熟悉,模板工程结构如下
Snipaste_2021-08-04_21-52-16.png


而在mian函数里,是简单的几行代码
    SYS_Init();
    UART_Open(UART0, 115200);
    printf("Hello World\n");
    while(1);


这个操作简直是简单明了啊。。。首先是UART_Open函数,参数里直接赋值串口号、波特率

Snipaste_2021-08-04_22-04-07.png


参数一直支持到串口5,M471手册里介绍的也是5个串口。但是在UART_Open函数以及其内部的函数中没有看到TX和RX的管脚操作。。。只剩一个SYS_Init()函数了,这个函数在mian.c文件中,
SYS->GPB_MFPH = (SYS->GPB_MFPH & ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk))    |       \
                    (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);
这个配置貌似也有点简单了吧,一个复合语句搞定?对比原理图,确认下,是不是PB12和PB13从源头,板载下载器开始,四个拨码开关,1和2决定了是否连接MCU串口和虚拟串口
Snipaste_2021-08-06_21-59-48.png


Snipaste_2021-08-06_22-00-40.png
拨码开关连接到MCU_TX/RX,MCU_TX/RX确实是连接到了PB12和PB13
Snipaste_2021-08-06_22-02-00.png



实际在看管脚复用功能的时候,发现新唐有一个软件,NuTool-PinView,可以方便的查看每个管脚的复用功能
Snipaste_2021-08-06_22-10-55.png


Snipaste_2021-08-06_22-11-54.png


自动侦测已连接的芯片,然后读取芯片管脚配置,可以反向验证芯片的管脚配置
在SYS_Init()函数中,还注意到一点,

SYS_UnlockReg();
SYS_LockReg();


就是这对操作,查看参考手册,找到相关描述
Snipaste_2021-08-06_22-29-57.png


大意就是一些系统控制寄存器需要被保护,以避免一些意外的操作。在对这些特殊寄存器编程的时候,要进行解除保护。解除保护就是序列的将数据“59h”,“16h”和“88h”连续写入寄存器SYS REGLCTL。在这三个数据写入过程中,任何不同的数据值、不同的序列或任何其他对其他地址的写入都会中止这个操作。下面列出了全部需要解除保护的寄存器名称 Snipaste_2021-08-08_21-16-17.png

在SYS_Init()函数中,解除保护后,就是设置晶振管脚、各种系统时钟源操作。
整个工程,最终的效果就是串口输出一个字符串


Snipaste_2021-08-06_23-04-03.png

对于打印输出以及输入,库里也提供了一个c文件retarget.c来实现基于半主机的printf和getchar,然后就转到通用操作了,改写重定向这两个函数

int fputc(int ch, FILE *stream)
{
    SendChar(ch);
    return ch;
}

int fgetc(FILE *stream)
{
    return (GetChar());
}
SendChar以及GetChar就是和实际串口操作相挂钩的



使用特权

评论回复
734774645| | 2021-8-9 15:05 | 显示全部楼层
新唐比较给力的,直接提供好了重定向文件,里面有常用的几个函数非常棒。包括硬件错误处理函数。

使用特权

评论回复
数码小叶|  楼主 | 2021-8-9 20:52 | 显示全部楼层
734774645 发表于 2021-8-9 15:05
新唐比较给力的,直接提供好了重定向文件,里面有常用的几个函数非常棒。包括硬件错误处理函数。 ...

还真是,其他最多只是把printf重定向好

使用特权

评论回复
koala889| | 2021-8-10 10:57 | 显示全部楼层
要是有些使用教程,就更好了

使用特权

评论回复
uptown| | 2021-9-4 17:57 | 显示全部楼层
重定向不是有宏定义了吗   

使用特权

评论回复
cehuafan| | 2021-9-4 17:57 | 显示全部楼层
用了microlib了吗      

使用特权

评论回复
sesefadou| | 2021-9-4 17:58 | 显示全部楼层
资料在哪里下载的      

使用特权

评论回复
earlmax| | 2021-9-4 17:58 | 显示全部楼层
M471性能怎么样     

使用特权

评论回复
alvpeg| | 2021-9-4 17:58 | 显示全部楼层
新唐的BSP包资源真多。         

使用特权

评论回复
primojones| | 2021-9-4 17:58 | 显示全部楼层
有操作系统的模板吗?         

使用特权

评论回复
10299823| | 2021-9-4 17:59 | 显示全部楼层
arm内核的都支持库函数吧   

使用特权

评论回复
lihuami| | 2021-9-4 17:59 | 显示全部楼层
期待跟stm32一样的图形化开发。         

使用特权

评论回复
xiaoyaozt| | 2021-9-4 18:00 | 显示全部楼层
prng是什么库?         

使用特权

评论回复
jimmhu| | 2021-9-4 18:01 | 显示全部楼层
NuTool-PinView很给力呢。           

使用特权

评论回复
数码小叶|  楼主 | 2021-9-4 20:53 | 显示全部楼层
sesefadou 发表于 2021-9-4 17:58
资料在哪里下载的

官网,板卡里面就有

使用特权

评论回复
这个库文件,确实不错的,很棒的一种。感谢楼主的分享。不错的。

使用特权

评论回复
redone| | 2021-9-11 11:05 | 显示全部楼层
你这个软件厉害啊,官网下的么?我也去找找

使用特权

评论回复
cyclefly| | 2021-10-19 17:23 | 显示全部楼层
恩,新唐的函数初始化确实很简单,
刚开始不习惯的是,在系统时钟里分配引脚,然后在初始化外设,
用用习惯了,感觉,这样也没什么。

使用特权

评论回复
asmine| | 2021-10-26 17:17 | 显示全部楼层
NuTool-PinView
这个看着挺好

使用特权

评论回复
ddw315| | 2022-1-10 10:47 | 显示全部楼层
需要M471开发板 可以找我

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

2536

帖子

19

粉丝