[技术问答]

怎样管脚复用

[复制链接]
1116|5
手机看帖
扫描二维码
随时随地手机跟帖
123ycli| | 2017-6-9 09:58 | 显示全部楼层
以 PA5 脚为例, 讲解一下在系统初始化过程中的管脚复用问题
首先通过看 NV32 的管脚分配图

我们可以直观的看出, 此管脚上默认优先级最高的就是复位功能, 类于这种系统级的功能用来管脚复用的情况还有很多种, 比如 NMI, SWD 功能所在引脚的管脚复用, 都需要在系统初始化函数 Sysinit 中进行配置。
1.在 Sysinit.c 中的 sysinit 函数中初始化 SIM 模块的结构体: SIM_ConfigType sSIMConfig = {{0},0};
2.利用模块化编程的思想, 若宏定义 DISABLE_RST 这个参数, 则禁用 RESET 脚, 即给对应的结构体变量赋值, 对应的引脚参数参看 SIM 章节的 SIM_SOPT 系统选项寄存器的详细信息。
#if defined(DISABLE_RST)
sSIMConfig.sBits.bDisableRESET = 1;//禁用 RESET 脚
#endif
再比如, 要禁用 NMI 引脚功能, 作为普通 IO 口, 和禁用 RESET 管脚同样的方法, 进行 DISABLE_NMI宏定义即可, 即在文件开头#define DISABLE_NMI
#if defined(DISABLE_NMI)
sSIMConfig.sBits.bDisableNMI = 1;//禁用不可屏蔽中断的管脚, 具体查看 NV32 管脚分配图
#endif
3.进行其他相关的配置以后, 通过结构体传参进行 SIM 模块的初始化: SIM_Init(&sSIMConfig);具体的 SIM模块的功能和函数见 NV32F100x 参考手册和 SIM 模块的相关说明
特别提醒:
*在禁用 RESET 时, 要考虑复位方式, 禁用 RESET 管脚时 MCU 可以通过上电复位解决。
*在禁用 SWD 调试方式时, 要考虑再次下载调试。 在开发板上烧录时, 在烧写之前拔掉上电跳帽, 按住复位开关, 重新插上跳帽, 在此过程中, 按键一直按住, 点击烧录按钮, 此时松开跳帽对 MCU 进行复位。

使用特权

评论回复
123ycli| | 2017-6-9 09:58 | 显示全部楼层
没有权限上传文档,这是来自官方的一个文档。

使用特权

评论回复
原味_郭| | 2017-6-20 22:04 | 显示全部楼层
这样的操作看着别扭,从STM32转过来的还真的不习惯。

使用特权

评论回复
l科科1987| | 2017-6-23 19:08 | 显示全部楼层
有官方的例程可以提高吗?

使用特权

评论回复
电子玩霸| | 2017-6-30 12:19 | 显示全部楼层
123ycli 发表于 2017-6-9 09:58
以 PA5 脚为例, 讲解一下在系统初始化过程中的管脚复用问题
首先通过看 NV32 的管脚分配图

学习了!但总的来说NV32的手册还不是很详细

使用特权

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

本版积分规则

2

主题

11

帖子

0

粉丝