一、简介
为了充分利用 MCU 的引脚资源,会将一些特殊引脚复用做普通 GPIO 口。N32G45x 系列里面 HSE、LSE、JTAG/SWD 引脚均可复用为 GPIO 口。在用户手册 7.2.5 章节有对复用功能做详细介绍,在用户手册 7.4 章节有对复用寄存器(AFIO)的描述做详细说明。下面我们对上述几个特殊引脚的 GPIO 复用进行说明。
二、外部低速晶振(LSE)引脚复用做 GPIO
- LSE 引脚为 PC14、PC15,默认状态是 LSE 引脚
- PC14、PC15 在用作 GPIO 时,在同一时间只有一个引脚能作为输出,速度必须限制在 2MHz 以下,最大负载为 30pF,且不能用于电流源(用户手册 2.5.3.1 章节,数据手册 3.2 章节)。
- 这两个引脚在配置做 GPIO 时不需要额外关闭复用,只需将 LSE 时钟关闭之后,按照正常配置 GPIO 的流程来配置即可。
2.1 输出模式
具体步骤:
2.1.1 关闭 LSE 时钟并使能相应时钟
2.1.2 将 GPIO 口配置为推挽输出模式
2.2 外部中断模式
具体步骤:
2.2.1 关闭 LSE 并使能相应时钟
2.2.2 将 GPIO 口配置为浮空输入模式
2.2.3 将对应引脚映射到相应的中断线
2.2.4 配置引脚的外部中断以及中断优先级
2.2.5 实现对应的中断服务函数
三、外部高速晶振(HSE)引脚复用做 GPIO
- HSE 引脚为 PD0、PD1,默认状态下是 HSE 引脚
- 只有在 48 和 64 引脚的封装上,才会有 HSE 引脚的 GPIO 复用;更高的引脚上面有独立的 PD0、PD1,不需要复用。
- 复用的 PD0、PD1 不能用来产生外部中断/事件(用户手册2.5.4 章节)
四、JNTRST 引脚复用做 GPIO
- JNTRST 引脚为 PB4,默认是 JTAG 接口烧录的可选引脚,可接可不接
- 只对该引脚做复用的话,不影响 JTAG 接口的使用
- 该引脚上电之后默认状态为输入上拉
4.1 输出模式
具体步骤:
4.1.1 使能 AFIO 时钟以及 GPIO 端口时钟
4.1.2 使能特殊引脚到 GPIO 口的复用
4.1.3 配置 GPIO 口为推挽输出
4.2 外部中断模式
具体步骤:
4.2.1 使能 AFIO 以及 GPIO 相应时钟
4.2.2 使能特殊引脚到 GPIO 口的复用
4.2.3 将 GPIO 口配置为浮空输入
4.2.4 配置引脚的外部中断以及中断优先级
4.2.5 实现对应的中断服务函数
五、JTAG 引脚复用做 GPIO
- JTAG 的 JTDI、JTDO、NJTRST 分别是 PA15、PB3、PB4 默认状态下是烧录口
- 对 JTAG 这几个引脚做复用时不会影响 SWD 的 PA13、PA14
- 上电之后 PA15 默认是输入上拉、PB3 默认是推挽输出无上下拉
5.1 输出模式
具体步骤:
5.1.1 使能 AFIO 时钟以及 GPIO 端口时钟
5.1.2 使能特殊引脚到 GPIO 口的复用
5.1.3 配置 GPIO 口为推挽输出
5.2 外部中断模式
具体步骤:
5.2.1 使能 AFIO 时钟以及 GPIO 端口时钟
5.2.2 使能特殊引脚到 GPIO 口的复用
5.2.3 配置 GPIO 口为浮空输入
5.2.4 配置引脚的外部中断以及中断优先级
5.2.5 实现对应的中断服务函数
六、JTAG 和SWD 引脚复用做 GPIO
- JTAG 的 JTDI、JTDO、NJTRST 分别是 PA15、PB3、PB4,SWD 的 SWDIO、SWCLK 分别是 PA13、PA14,默认状态下是烧录口
- 上电之后默认 PA15 是输入上拉、PA14 是输入下拉、PA13 是输入上拉、PB4 是输入上拉、PB3 是推挽输出无上下拉
注意:当 JTAG 和 SWD 都被复用做 GPIO 之后,将不能通过 JTAG/SWD 接口烧录,可以通过恢复 IO 口烧录功能或者切 Boot 等其它方式重新烧录。
6.1 输出模式
具体步骤:
6.1.1 使能 AFIO 时钟以及 GPIO 端口时钟
6.1.2 使能特殊引脚到 GPIO 口的复用
6.1.3 配置为推挽输出
6.2 外部中断模式
具体步骤:
6.2.1 使能 AFIO 时钟以及 GPIO 端口时钟
6.2.2 使能特殊引脚到普通 GPIO 口复用
6.2.3 配置引脚为浮空输入
6.2.4 配置引脚的外部中断以及中断优先级
6.2.5 实现对应的中断服务函数
七、参考文献
[1] DS_N32G455 系列数据手册 V2.1.pdf
[2] PB_N32G455 系列产品简介 V1.1.pdf
[3] AN_N32G45x_RF_WB 系列特殊引脚复用做 GPIO 使用应用笔记_V1.0.pdf
评论