电子商务网站建设课,seo技术推广,做视频开头动画网站,菠菜网站怎样做安全RX系列单片机的GPIO初始化 与IO口相关的寄存器端口#xff08;PORT#xff09;寄存器端口功能控制#xff08;MPC#xff09;寄存器MPC.PmnFPS的设置过程MPC寄存器设置注意事项 端口Pmn的初始化不同端口模式下#xff0c;PORT、MCP寄存器的配置顺序 感想#xff1a;与STM… RX系列单片机的GPIO初始化 与IO口相关的寄存器端口PORT寄存器端口功能控制MPC寄存器MPC.PmnFPS的设置过程MPC寄存器设置注意事项 端口Pmn的初始化不同端口模式下PORT、MCP寄存器的配置顺序 感想与STM32 GPIO配置的对比 以RX66T单片机和RX130单片机为例。 与IO口相关的寄存器
端口的配置就是写入端口配置相关寄存器的过程。 就瑞萨RX系列单片机而言包括PORT寄存器和MPC寄存器。
端口PORT寄存器
PDRGPIO方向寄存器读/写型 1输出 0输入默认值 PORTm.PDR.BITn对应Pmn。
有些端口只内建了输入逻辑门电路即便将其PDR位设置为1也是无效的。 不存在的端口只可配置PDR目的省电至于①哪些端口不存在、②PDR该配置成0还是1就要参考目标单片机的数据手册“Initialization of the Port Direction Register (PDR)”章节。 PODRGPIO输出电平寄存器读/写型 1输出H 0输出L默认值 PORTm.PODR.BITn对应Pmn。 有些端口只内建了输入逻辑门电路即便将其PODR位设置为1也不能输出。 PIDR端口输入电平寄存器只读型 1输入了H 0输入了L PORTm.PIDR.BITn对应Pmn。 不论Pmn的PDR位和PMR位如何设置只要其MPC寄存器没有被配置为模拟模式0x80Pmn的瞬时输入电平就总能通过PIDR读出。 PMR端口模式寄存器读/写型 1外设模式 0GPIO模式默认值 PORTm.PMR.BITn对应Pmn。 ODRyy 0, 1端口开漏寄存器读/写型 1CMOS输出 0NMOS开漏输出默认值 PORTm.ODR0/1.BITx与Pmn的对应关系是
PORTm.ODR0BIT6BIT4BIT2BIT0PmnPm3Pm2Pm1Pm0PORTm.ODR1BIT6BIT4BIT2BIT0PmnPm7Pm6Pm5Pm4 PCR端口输入上拉寄存器读/写型 1有内部上拉 0无内部上拉默认值 PORTm.PCR.BITn对应Pmn。 如果端口设置为外部总线端口WAIT端口除外、通用输出口外设输出口那么PCR的设置是无效的。 不存在端口不可配置PCR位必须保留默认值0。 暂时不表DSCRDSCR2端口驱动能力寄存器
端口功能控制MPC寄存器 PWPRMPC写保护寄存器读/写型 BIT7PFSWE写保护位 0可写入 1不可写入 BIT6FPS写保护位 0可写入 1不可写入 其它保留位必须保留默认值0。 FPS端口功能寄存器读/写型 BIT7ASEL模拟功能选择位 BIT6ISELEXTI功能选择位 BIT5~0PSEL外设功能选择位 MPC.PmnFPS对应Pmn。 不同Pmn的上述BIT支持情况不同应参考目标单片机的数据手册“Multi-Function Pin Controller (MPC)–Register Descriptions”章节。不支持的BIT位不可设定必须保留默认值0。 暂时不表PFCSE 暂时不表PFCSS0 暂时不表PFAOE0、PFAOE1 暂时不表PFBCR0、PFBCR1、PFBCR2、PFBCR4
MPC.PmnFPS的设置过程
复位PMR位设定外设端口的输入/输出方向关闭FPS写保护整体写入PmnFPS打开FPS写保护根据需要置位PMR位
MPC寄存器设置注意事项
设置PmnFPS前必须确保Pmn的PMR为0否则会有不可预料的信号在Pmn输入或输出。PmnFPS的设定值必须参照芯片手册。如果写入值超出手册的范围则不能保证写入操作的正确性。不能把同一个外设功能分配给多个引脚。比如一个UART只能有1个TX通道不能有多个TX通道。凡是模拟模式端口要先设置为普通输入先令PORTm.PMR.BITn0后令PORTm.PDR.BITn0再令PmnFPS的ASEL位为1MPC.PmnFPS0x80以避免精度下降。PMR、PDR、PmnFPS的组合是有限的如下
状态PMRPDRFPS.ASELFPS.ISELFPS.PSEL注意复位后0000000000b复位后端口是普通输入口普通输入0000/1x普通输出0100x外设功能1x00/1外设功能中断输入1001x不可屏蔽中断xxxxx模拟模式001xx触摸100011001b可当作一种外设功能EXTAL/XTAL00xxx
注x表示不需要设定推荐保留0。
端口Pmn的初始化
参考意法半导体STM8S单片机的标准库函数来设计端口初始化函数提供3个参数 分别是目标端口编号端口模式端口MPC设置
void GPIO_Init(gpio_pin_t pin, gpio_mode_t mode, uint8_t mpc_config);
//pin: 想要设定的端口序号Pmn
//mode: 要设定的端口模式
//mpc_config要设定的PmnFPS注意PmnFPS需要在MPC解锁时才可写入
不同端口模式下PORT、MCP寄存器的配置顺序
设置为复位后的状态
寄存器PMRPODRPDRPCRPmnPFSPMR设定值00000x00-
设置为浮空输入无中断
寄存器PMRPODRPDRPCRPmnPFSPMR设定值00000x00-
设置为上拉输入无中断
寄存器PMRPODRPDRPCRPmnPFSPMR设定值00010x00-
设置为普通输出H
寄存器PMRPODRPDRPCRPmnPFSPMR设定值01100x00-
设置为普通输出L
寄存器PMRPODRPDRPCRPmnPFSPMR设定值00100x00-
设置为外设功能
寄存器PMRPODRPDRPCRPmnPFSPMR设定值0000查表1
设置为模拟模式
寄存器PMRPODRPDRPCRPmnPFSPMR设定值00000x80-
※1-表示跳过 ※2应按照表格中从左到右的顺序设置寄存器
感想与STM32 GPIO配置的对比
比照STM32RX的PMR设置相当于32上设置AFIO。RX比STM32的端口设置多了MPC即“IO挂靠在哪个外设上”的设置。在RX上当某端口作为UART-TX功能时在发送空闲时似乎要设置它为普通输出H才能保证空闲时TX线路维持高电平很离谱