【奇葩瑞萨-004】RX系列单片机的GPIO初始化
RX系列单片机的GPIO初始化
- 与IO口相关的寄存器
- 端口(PORT)寄存器
- 端口功能控制(MPC)寄存器
- MPC.PmnFPS的设置过程
- MPC寄存器设置注意事项
- 端口Pmn的初始化
- 不同端口模式下,PORT、MCP寄存器的配置顺序
- 感想:与STM32 GPIO配置的对比
以RX66T单片机和RX130单片机为例。
与IO口相关的寄存器
端口的配置,就是写入端口配置相关寄存器的过程。
就瑞萨RX系列单片机而言,包括PORT寄存器和MPC寄存器。
端口(PORT)寄存器
- PDR:GPIO方向寄存器,读/写型
1:输出
0:输入(默认值)
PORTm.PDR.BITn对应Pmn。
有些端口只内建了输入逻辑门电路,即便将其PDR位设置为1,也是无效的。
不存在的端口只可配置PDR(目的:省电),至于①哪些端口不存在、②PDR该配置成0还是1,就要参考目标单片机的数据手册“Initialization of the Port Direction Register (PDR)”章节。
-
PODR:GPIO输出电平寄存器,读/写型
1:输出H
0:输出L(默认值)
PORTm.PODR.BITn对应Pmn。
有些端口只内建了输入逻辑门电路,即便将其PODR位设置为1,也不能输出。 -
PIDR:端口输入电平寄存器,只读型
1:输入了H
0:输入了L
PORTm.PIDR.BITn对应Pmn。
不论Pmn的PDR位和PMR位如何设置,只要其MPC寄存器没有被配置为模拟模式(0x80),Pmn的瞬时输入电平就总能通过PIDR读出。 -
PMR:端口模式寄存器,读/写型
1:外设模式
0:GPIO模式(默认值)
PORTm.PMR.BITn对应Pmn。 -
ODRy(y = 0, 1):端口开漏寄存器,读/写型
1:CMOS输出
0:NMOS开漏输出(默认值)
PORTm.ODR0/1.BITx与Pmn的对应关系是
| PORTm.ODR0 | BIT6 | BIT4 | BIT2 | BIT0 |
|---|---|---|---|---|
| Pmn | Pm3 | Pm2 | Pm1 | Pm0 |
| PORTm.ODR1 | BIT6 | BIT4 | BIT2 | BIT0 |
| Pmn | Pm7 | Pm6 | Pm5 | Pm4 |
-
PCR:端口输入上拉寄存器,读/写型
1:有内部上拉
0:无内部上拉(默认值)
PORTm.PCR.BITn对应Pmn。
如果端口设置为外部总线端口(WAIT端口除外)、通用输出口,外设输出口,那么PCR的设置是无效的。
不存在端口不可配置PCR位,必须保留默认值0。 -
暂时不表:DSCR,DSCR2:端口驱动能力寄存器
端口功能控制(MPC)寄存器
-
PWPR:MPC写保护寄存器,读/写型
BIT7:PFSWE写保护位 0:可写入 1:不可写入
BIT6:FPS写保护位 0:可写入 1:不可写入
其它:保留位,必须保留默认值0。 -
FPS:端口功能寄存器,读/写型
BIT7:ASEL,模拟功能选择位
BIT6:ISEL,EXTI功能选择位
BIT5~0:PSEL,外设功能选择位
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.BITn=0,后令PORTm.PDR.BITn=0),再令PmnFPS的ASEL位为1(MPC.PmnFPS=0x80),以避免精度下降。
- PMR、PDR、PmnFPS的组合是有限的,如下:
| 状态 | PMR | PDR | FPS.ASEL | FPS.ISEL | FPS.PSEL | 注意 |
|---|---|---|---|---|---|---|
| 复位后 | 0 | 0 | 0 | 0 | 000000b | 复位后端口是普通输入口 |
| 普通输入 | 0 | 0 | 0 | 0/1 | x | |
| 普通输出 | 0 | 1 | 0 | 0 | x | |
| 外设功能 | 1 | x | 0 | 0/1 | 外设功能 | |
| 中断输入 | 1 | 0 | 0 | 1 | x | |
| 不可屏蔽中断 | x | x | x | x | x | |
| 模拟模式 | 0 | 0 | 1 | x | x | |
| 触摸 | 1 | 0 | 0 | 0 | 11001b | 可当作一种外设功能 |
| EXTAL/XTAL | 0 | 0 | x | x | x |
注: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寄存器的配置顺序
- 设置为复位后的状态
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 0 | 0 | 0 | 0x00 | - |
- 设置为浮空输入&无中断
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 0 | 0 | 0 | 0x00 | - |
- 设置为上拉输入&无中断
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 0 | 0 | 1 | 0x00 | - |
- 设置为普通输出H
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 1 | 1 | 0 | 0x00 | - |
- 设置为普通输出L
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 0 | 1 | 0 | 0x00 | - |
- 设置为外设功能
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 0 | 0 | 0 | 查表 | 1 |
- 设置为模拟模式
| 寄存器 | PMR | PODR | PDR | PCR | PmnPFS | PMR |
|---|---|---|---|---|---|---|
| 设定值 | 0 | 0 | 0 | 0 | 0x80 | - |
※1:"-"表示跳过
※2:应按照表格中从左到右的顺序设置寄存器
感想:与STM32 GPIO配置的对比
- 比照STM32,RX的PMR设置,相当于32上设置AFIO。
- RX比STM32的端口设置多了MPC,即“IO挂靠在哪个外设上”的设置。
- 在RX上,当某端口作为UART-TX功能时,在发送空闲时,似乎要设置它为普通输出H,才能保证空闲时TX线路维持高电平(很离谱?)
相关文章:
【奇葩瑞萨-004】RX系列单片机的GPIO初始化
RX系列单片机的GPIO初始化 与IO口相关的寄存器端口(PORT)寄存器端口功能控制(MPC)寄存器MPC.PmnFPS的设置过程MPC寄存器设置注意事项 端口Pmn的初始化不同端口模式下,PORT、MCP寄存器的配置顺序 感想:与STM…...
【Git】Git切换地址
如何切换git代码地址? 1、查看当前远程 url git remote -v执行命令后,可以看见当前有2个URL。 远程 URL 在一般情况下有两个,分别是 fetch 和 push。 fetch URL 是用于从远程仓库获取最新版本的数据。当您运行 git fetch 命令时…...
elementUI点击当前行更改当前行状态(数据更新DOM不更新问题解决)
<template slot-scope"{row,$index}" slot"menu"><el-button v-if"row.editable" type"text" size"small" click"changeStatus(row,$index)">编辑</el-button><el-button v-else type"…...
python爬取阿里巴巴商品页面数据api
以下是使用Python爬取商品页面的示例代码: import requests from bs4 import BeautifulSoup# 定义要爬取的商品链接 url https://www.alibaba.com/product-detail/High-Quality-Custom-Logo-Printing-Black_60802527914.html# 发送请求 response requests.get(ur…...
angular-mat-select 多选 实现按选择顺序排序
mat-select 正常情况下,多选后,已选项是按列表顺序进行排序,如果我想实现按照点击项目的顺序进行排序,我该如何做呢? [参考网址](Angular order of selected option in multiple mat-select - Stack Overflow) sortComparator是Angular Material中mat-select组件的一个属…...
爬虫010_列表高级_添加_append_extend_修改_查询_in_not int_删除_del_pop_remove---python工作笔记029
然后再来看列表操作 首先添加append方法 然后插入,坐标是要插入的下标,右边是插入的内容 看结果 1,2,3,4,5,6 然后这个extend,是逐个插入,放到后边 然后是修改,直接对下标赋值 看结果</...
微服务服务拆分和远程调用
一、服务架构比较 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目&#x…...
MySQL8.1源码安装与部署
官方文档 https://downloads.mysql.com/archives/community/https://dev.mysql.com/doc/refman/8.1/en/binary-installation.html官方文档源码安装步骤 # Preconfiguration setup $> groupadd mysql $> useradd -r -g mysql -s /bin/false mysql # Beginning of source-b…...
algebraic reconstruction technique(ART)
数值线性代数的Kaczmarz方法被Gordon,Bender,Herman引入至CT重建中,称为ART方法。 A x b Axb Axb A A A为 m n m\times n mn的稀疏矩阵。 A A A的元素 a i j a_{ij} aij表示像素 j j j对射线 i i i投影的贡献。 A A A的行向量 a i T a…...
oracle11g安装
oracle11g安装 安装环境 虚拟机版本:centos7.9 虚拟机ip:192.168.5.144 oracle版本:11g oracle安装包:p13390677_112040_Linux-x86-64_1of7.zip,p13390677_112040_Linux-x86-64_2of7.zip,p13390677_11204…...
网络防御(9)
.一、SSL工作过程是什么? SSL位于应用层和传输层之间,它能够为基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层: 上层为SSL握手协议(SSL handshake protocol)、SSLpassword变化协议(S…...
Spring核心与设计思想
文章目录 Spring是什么?认识Spring IoC容器传统的开发图书管理系统设计可能导致的问题 使用IoC容器 Spring是什么? Spring是一个用于构建企业级应用程序的开源框架,它为Java开发者提供了一种简化和加速应用程序开发的方式。Spring框架提供了…...
【stream的使用】使用stream.filter过滤List对象
Stream初相识 概括讲,可以将Stream流操作分为3种类型: 创建Stream Stream中间处理 终止Steam 每个Stream管道操作类型都包含若干API方法,先列举下各个API方法的功能介绍。 开始管道 主要负责新建一个Stream流,或者基于现有的数组…...
Flink多流处理之connect拼接流
Flink中的拼接流connect的使用其实非常简单,就是leftStream.connect(rightStream)的方式,但是有一点我们需要清楚,使用connect后并不是将两个流给串联起来了,而是将左流和右流建立一个联系,作为一个大的流,并且这个大的流可以使用相同的逻辑处理leftStream和rightStream,也可以…...
对任意类型数都可以排序的函数:qsort函数
之前我们学习过冒泡排序: int main() {int arr[] { 9,7,8,6,5,4,3,2,1,0 };int sz sizeof(arr)/sizeof(arr[0]);int i 0;for (i 0; i < sz-1; i) {int j 0;for (j 0; j < sz-1-i; j) {if (arr[j] > arr[j 1]){int temp 0;temp arr[j];arr[j] ar…...
vue数据更新table内容不更新解决方法
场景: table组件绑定的数据变化时,页面没有重新渲染,常见于子组件中使用table组件 原理: 创建实例时 数组在vue中没有被监听到,属于非响应式数据,数组的下标变化无法监听到 解决方式: <e…...
合宙Air724UG LuatOS-Air script lib API--record
record Table of Contents record record.start(seconds, cbFnc, type, quality, rcdType, format, streamRptLen) record.stop(cbFnc) record.getFilePath() record.getData(offset, len) record.getSize() record.delete() record.exists() record.isBusy() record 模块功能&…...
基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ................................................................ % 设置训练选项options …...
Java分布式微服务3——Docker
文章目录 Docker介绍安装DockerDocker基础操作Docker服务的启动镜像命令容器命令1. 从docker hub去查看Nginx容器的运行命令2. 查看所有容器状态3. 查看容器日志4. 进入Nginx容器执行命令,修改Html内容,添加“Hello World”5. 停止与开始容器6. 删除容器…...
js字符串替换
在JavaScript中,字符串替换 有多种方法,下面介绍其中一些比较常用的方法。 使用replace()方法、 replace()方法用于在字符串中查…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...
Cursor AI 账号纯净度维护与高效注册指南
Cursor AI 账号纯净度维护与高效注册指南:解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后,许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...
