以 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 进行复位。 |