引言
c语言中读取某个接口电路采用的写法是
#define rGPBDAT (*(volatile unsigned *))0x56000014
其中地址可按需要改变。
rGPBDAT &= (~(1<<5));
RGPBDAT |= (1<<5);
GPIO接口
LED灯的例子
GPXXCON的功能
一共有32位,每4位规定了对应的引脚的功能是输入/输出或是其他作用。
GCXXDAT的功能
一共有8位。对应了一个引脚的内容。当功能为输入时则是要读取的内容,功能为输出时则是要输出的内容。
GPXXPUD
按键的例子
蜂鸣器的例子
涉及到的寄存器
| 寄存器 | 作用 |
|---|---|
| GPxxCON | 设置引脚为输入或者是输出 |
| GPxxDAT | 输出数据或是读入 |
| GPxxPUD |
UART接口
概述
- 数据终端设备DTE
- 数据通信设备DCE
引脚功能
RXD:输入,接收数据 TXD:输出,发送数据
DTR:输出,DTE就绪 DSR:输入,MODEM就绪
TRS:输出,请求发送 CTS:输入,允许发送硬件握手
DTR:数据终端设备准备好。
DSR:数据通信设备准备好。

实例
UART操作的一般步骤
- 设置所涉及引脚为UART功能
- 设置波特率,传输格式
- UART通道的工作模式
- 等待发送/接收数据的完成
具体的步骤:
初始化的步骤:
- 设置引脚模式
- 在GPxxCON寄存器设置引脚为UART模式
- 设置数据格式等
- 在ULCONn寄存器设置数据格式,如数据长度等。
- 在UCONn寄存器设置发送和接收的模式,中断的设置,时钟的选择等。
- 在UFCONn寄存器使能FIFO。
- 在UMCONn设置流控。
- 设置波特率
- 设置波特率分频寄存器(UBRDIVn)和分频槽寄存器(UDIVSLOTn)
发送数据的步骤:
- 读取UFSTATn寄存器的指定位数据,如果RX FIFO空,则等待
- 如果不为空,则从URXHn返回数据
接收数据的步骤:
- 读取UFSTATn寄存器指定位数据,如果TX FIFO满,则等待
- 如果不为满,则向UTXHn写数据
涉及到的寄存器
| 寄存器 | 作用 | | —- | —- | | GPxxCON | 设置引脚功能为UART模式 | | ULCONn | 设置数据格式,如数据长度等 | | UCONn | 设置收发模式,中断设置,时钟选择等 | | UFCONn | 使能FIFO | | UMCONn | 设置流控 | | UBRDIVn | 波特率分频寄存器 | | UDIVSLOTn | 分频槽寄存器 | | UFSTATn | 获取RX FIFO和TX FIFO的空满状态 | | URXHn | RX FIFO的落地实现,实现接收缓冲 | | UTXHn | TX FIFO的落地实现,实现输出缓冲 |
定时器
蜂鸣器的例子。
内部有5个定时器。
占空比的计算。
- 在GPxxCON寄存器将指定端口设置成为TOUT(与Output有区别)
- 设置预分频值和分频值。预分频值在TCFG0寄存器的prescaler位。分频值在TCFG1寄存器的指定定时器位。
- 设置TCNTB寄存器和TCMPB寄存器。
- 在TCON寄存器中设置手动更新位。
- 随后在TCON寄存器中关闭手动更新位,设置计时器开始计时,设置自动重装载,设置中断。
涉及到的寄存器
| 寄存器 | 作用 | | —- | —- | | GPxxCON | 设置引脚为TOUT定时器输出 | | TCFG0 | 设置预分频值,采用不同的定时器会有不同的设置位 | | TCFG1 | 设置分频值,采用不同的定时器会有不同的设置位 | | TCNTBn | 设置TCNTB值,一个大周期所需要的时钟周期 | | TCMPBn | 设置TCMPB值,电平反转所需要的时钟周期 | | TCON | 设置手动更新,自动重装,开始/停止,中断相应。不同的定时器会有不同的设置位 |
