博客只是用于记录自己使用过的东西,将自己的感想和使用方法记录,过程可能会出现很多纰漏以及理解的不到位,希望可以和大家交流
1、简介
开发板S32K144+S32DS+JLINK,裸机版的程序编写
2、GPIO
2.1、S32K144的MCU的引脚功能由两个模块配置和控制
- PORT--引脚端口功能复用和中断模块
- GPIO--引脚做GPIO功能时输入输出配置/控制模块
2.2、GPIO寄存器
PDOR | Port Data Output Register | 输出管脚的值,对应逻辑值 |
PSOR | Port Set Output Register | 将指定管脚的值置 1,读取恒为零 |
PCOR | Port Clear Output Register | 将指定管脚的值置 0,读取恒为零 |
PTOR | Port Toggle Output Register | 将指定管脚的值反转,读取恒为零 |
PDIR | Port Data Input Register | 读取指定管脚的值 |
PDDR | Port Data Direction Register | 设置io口方向:0 Input,1 Output |
PIDR | Port Input Disable Register | 设置0 管脚正常输入,1 管脚不能输入 |
2.3、PORT寄存器
2.3.1、PORT_PCRn:Pin Control Register n
为PORT模块寄存器地址映射时,为每一个端口PORT分配了32个PCR寄存器,意味着每个端口最多支持32引脚PIN。但是实际不同part各组端口(PARTA/B/C/D/E)的引脚(GPIO PIN)数不同:
其中PCR寄存器的特性:
Field | Name | Description |
0 | PS | 上下拉选择 1->Pullup 0->Pulldown |
1 | PE | 上下拉使能 1->Enable 0->Disable |
4 | PFE | 被动滤波器使能选择 1->Enable 0->Disable |
6 | DSE | 驱动能力选择 1->强驱动 0->普通驱动 |
10-8 | MUX | 引脚外设功能复用选择,用于该引脚的复用功能或者GPIO功能 |
15 | LK | 写保护锁,不允许配置,直到下次系统复位为止 |
19-16 | IRCQ | 引脚中断配置,配置中断状态标志位(ISF)置位的条件 |
24 | ISF | 中断标志位,该bit的置位条件由IRQC配置 |
2.3.2、PORT_GPCL/HR:Global Pin Control Low/High Register
全局引脚控制寄存器,每个PORT有一个PORT_GPCLR和一个PORT_GPCHR寄存器分别配置该PORT的低16个引脚和高16个引脚的PCR寄存器配置,每个GPWE位对应一个引脚,使能(对应位为1)时,GPWD配置该引脚的PCR寄存器写有效,否则无效
2.3.3、PORT_GICL/HR:Global Interrupt Control Low/High Register
全局中断控制寄存器,每个PORT还提供了全局中断控制低/高寄存器用于快速配置该PORT的相同中断配置的多个引脚中断配置,其工作原理与全局引脚控制高低寄存器类似
2.3.4、PORT_ISFR: Interrupt Status Flag Register
端口中断状态标志寄存器,该寄存器为每一个写1清0的bit位对应一个引脚的中断状态,1->中断发生,0->中断未发生
2.3.5、PORT_DFER/DFCR/DFWR: Digital Filter
数字滤波器使能寄存器(PORT_DFER):该寄存器每一个bit位配置了相应PORT引脚的输入数字滤波器是否使能:1->使能,0->关闭
数字滤波器时钟选择寄存器(PORT_DFCR):该寄存器仅最低bit位有效,用于选择该PORT输入引脚数字滤波器的参考时钟:1->使用低功耗时钟(LPO_CLK) 2->使用总线时钟(BUS_CLK)
数字滤波器宽度配置寄存器(PORT_DFWE):该寄存器的仅最低5个bit位FILT[4:0]有效,用于配置PORT的引脚输入数字滤波器滤波宽度,只有大于FILT[4:0]个滤波周期的信号才能被MCU识别