【microchip dspic33 系列教程(3)】

microchip dspic33 系列教程(3)

在上节我们已经配置了时钟,系统时钟获得了100M的一个速率,接下来我们继续IO的配置。在此之前先了解一下IO的相关介绍和相应的寄存器。

1)以下是带边沿检测模块的 I/O 端口的一些主要特性:

• 可单独使能 / 禁止输出引脚的漏极开路
• 可单独使能 / 禁止输入引脚的上拉电阻
• 监视某些输入并在出现不匹配的情况时产生中断
• 可在休眠和空闲模式下继续工作
典型端口结构框图

2)控制寄存器:

<1>用于配置三态功能的寄存器 (TRISx):

TRISx 寄存器可配置流经端口 I/O 引脚的数据方向流。TRISx 寄存器位确定 PORTx I/O 引脚是输入还是输出引脚。
• 如果数据方向位为 “1”,相应的 I/O 端口引脚为输入引脚。
• 如果数据方向位为 “0”,相应的 I/O 端口引脚为输出引脚。
• 从 TRISx 寄存器读取时将读取写入到该寄存器的最后一个值。
• 上电复位 (Power-on Reset, POR)后,所有 I/O 端口引脚均定义为输入

<2>用于配置端口功能的寄存器 (PORTx):

PORTx 寄存器允许访问 I/O 引脚:
• 写入到 PORTx 寄存器将写入到相应的 LATx 寄存器 (PORTx 数据锁存器)。配置为输出的
I/O 端口引脚将被更新。
• 写入到 PORTx 寄存器实际上与写入到 LATx 寄存器是一样的。
从 PORTx 寄存器读取将读取应用到端口 I/O 引脚的同步信号

<3>用于配置锁存功能的寄存器 (LATx)

LATx 寄存器 (PORTx 数据锁存器)可保存写入到端口 I/O 引脚的数据:
• 写入到 LATx 寄存器时会将数据锁存到相应的端口 I/O 引脚。配置为输出的 I/O 端口引脚将被更新。
• 从LATx寄存器读取将读取保存在PORTx数据锁存器中的数据,而不是从端口I/O引脚读取。

<4>漏极开路配置寄存器 (ODCx)

可以单独将每个 I/O 引脚配置为常规数字输出或漏极开路输出。这是由与每个 I/O 引脚相关的漏极开路控制寄存器 ODCx 控制的。如果 I/O 引脚的 ODCx 位为***“1”,引脚将作为漏极开路输出***。
如果 I/O 引脚的 ODCx 位为“0”,将引脚配置为常规数字输出(ODCx 位仅对输出引脚有效)。
复位后, ODCx 寄存器所有位的状态将置为 “0”。

<5>用于配置模拟和数字端口引脚的寄存器 (ANSELx)

ANSELx 寄存器用于控制模拟端口引脚的操作。如果要将端口引脚用作模拟输入,其相应的
ANSELx 和 TRISx 位必须置 1。要将端口引脚用于带有数字模块(例如,定时器和 UART 等)的
I/O 功能,相应的 ANSELx 位必须清零

<6>输入电平变化通知 (CN)寄存器

I/O 端口的输入电平变化通知(CN)功能允许 dsPIC33/PIC24 器件在某些输入引脚发生状态变化
(Change-Of-State,COS)时,向处理器发出中断请求。该特性可检测输入状态变化,即使在休眠模式下、禁止时钟时。
下列控制寄存器与每个 I/O 端口的 CN 功能相关:
• 电平变化通知上拉使能 (CNPUx)
• 电平变化通知下拉使能 (CNPDx)
• 电平变化通知控制 (CNCONx)
• 电平变化通知使能 / 负边沿控制 (CNEN0x)
• 电平变化通知正边沿控制 (CNEN1x)
• 电平变化通知状态不匹配事件 (CNSTATx)
• 电平变化通知状态使能边沿事件 (CNFx)
每个 I/O 引脚都有与之相连的弱上拉和弱下拉。上拉充当连接到该引脚的拉电流或灌电流源,当连接按钮或键盘设备时,不再需要使用外部电阻。可使用包含每个引脚控制位的CNPUx和CNPDx寄存器分别使能各个上拉和下拉。将任一控制位置 1均可使能相应引脚的弱上拉和 / 或下拉功能。CNCONx 寄存器提供电平变化通知控制.CNSTYLE 位将选择标准不匹配模式或可配置的边沿检测模式。CNSTLYE 清零后 (不匹配模式),CNEN0x 寄存器包含每个输入引脚的 CN 中断允许控制位。将其中任一位置 1 将允许相应引脚的 CN 中断。 CNFx 位用作不匹配模式事件状态标志。如果 CNSTYLE 位置 1 (边沿检测模式), CNEN0x 寄存器将用于使能 / 禁止给定引脚的负边沿事件,CNEN1x用于使能/禁止给定引脚的正边沿事件。CNSTATx位用作边沿检测事件状态标志。在没有 CNSTYLE 位的器件上,边沿检测模式不可用, CN 逻辑将在标准不匹配模式下工作。

3)用MCC配置我们需要的IO

创建完工程文件,我们打开MCC配置。在pin manager里选择pin module,此时没配置的管脚可以看到是锁打开的状态,我们选中之后它就是个锁锁住的状态且为绿色。在pin module下有两个状态,一个是input,一个是output,需要什么模式就在哪一个的模式下去锁定。
在这里插入图片描述
下面图展示了如何去配置IO的初始电平和上下拉开漏输出以及中断触发。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们最终只要重写这个回调函数就可以。
在这里插入图片描述
使用IO的正常拉低拉高的功能我们可以在头文件中看到这些函数,我们调用即可
在这里插入图片描述
到此关于IO的配置我们已经知道了,后面我们继续学习配置UART

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值