1.复位和时钟系统
1.1. 复位
CIU32M010、CIU32M030 支持系统复位、电源复位和主复位。
1.1.1. 系统复位
系统复位将复位除某些复位状态寄存器和特殊功能寄存器之外的所有寄存器。
当以下事件中的一件发生时,产生一个系统复位
• SLEEP 模式下外部 IO 口唤醒
• WDT 计数溢出复位
• 系统锁定复位
1.1.2. 主复位
主复位能将部分系统复位无法复位的寄存器复位。
以下事件可以触发一个主复位
• 软件复位
• PVD 检测到电压低事件,且控制器处于复位功能模式
1.1.3. 电源复位
上电/掉电复位(POR/PDR 复位)都属于电源复位。电源复位将复位所有的逻辑和模拟模块。复位入口矢量被固定在地址 0x0000_0004。
1.2 时钟
1.2.1. 模块框图
1.2.2. HIRC 时钟
HIRC 时钟信号由内部 72MHz 的振荡器产生,HIRC 振荡器能够在不需要任何外部器件的条件下提供系统时钟。HIRC 需要频率校准,校准值写在 FLASH 系统存储区域。在程序使用这个时钟前,可以读取并配置出高精度的 HIRC 时钟。经过出厂校验后,正常温度范围下 HIRC 精度为 72MHz(±1.5%),具体请参考电气特性参数 。
1.2.3. LIRC 时钟
LIRC 振荡器担当一个低功耗时钟源的角色,它作为系统启动时钟为其他单元提供时钟。LIRC 时钟频率大约 256KHz。
1.2.4. 系统时钟(SYSCLK)
两种不同的时钟源可被用来驱动系统时钟(SYSCLK)
• 内部低速 256KHz LIRC
• 内部高速 72MHz(±1.5%) 高速振荡器
1.2.5. 毛刺滤波时钟源选择
三种不同的时钟源可被用来驱动 GPIO 的毛刺滤波时钟
• 内部高速 HIRC 的分频时钟
• 内部低速 LIRC_256K 8 分频时钟
• 系统时钟
• 内部低速 LIRC_256K
当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。
2. 通用输入输出
2.1. 模块介绍
每组 GPIO 端口有四个 32 位配置寄存器(GPIOx_MODE,GPIOx_OTYPE,GPIOx_OSPEED and GPIOx_PUPD),两个 32 位数据寄存器(GPIOx_IDAT and GPIOx_ODAT),一个 32 位置位/复位寄存器
(GPIOx_BSR)和一个 32 位翻转寄存器(GPIOx_TGL)。另外,所有 GPIO 有两个复用功能选择寄存器(GPIOx_AFRH and GPIOx_AFRL)。
注:GPIOx 中的 x 表示 GPIO 组数。
2.2. 功能特点
• 输出状态:推挽或开漏(上下拉)
• 输出寄存器状态值(GPIOx_ODAT) 或者复用功能输出
• 输入状态:浮空、上下拉、模拟
• 输入数据到数据寄存器(GPIOx_IDAT) 或复用功能输入
• 独立置位/复位/翻转 IO 状态(GPIOx_ BSR、GPIOx_TGL)
• 模拟功能
• 复用功能(开漏或推挽、上拉或下拉)
2.3. 功能说明
GPIO 的每一个端口可以通过软件独立配置成下面状态
• 输入浮空
• 输入上拉
• 输入下拉
• 模拟功能
• 开漏输出(上拉或下拉)
• 推挽输出
• 复用功能(开漏或推挽、上拉或下拉)
2.3.1. 通用 IO(GPIO)
复位期间和刚复位后,复用功能未开启,IO 端口被配置成浮空输入模式。当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ ODAT)输出到相应的 IO 引脚。可以以推挽或开漏模式使用输出驱动器。输入数据寄存器(GPIOx_ IDAT)在每个 APB 时钟周期 IO 引脚上的数据。所有 GPIO 引脚有一个内部弱上拉,当配置为输入时,它们可以被断开。
2.3.2. 单独的位操作
当对 GPIOx_ ODAT 的个别位编程时,软件不需要禁止中断:在单次 APB 写操作里,可以只更改一个或多个位。只需要通过对“置位/复位寄存器”(GPIOx_BSR)或“取反寄存器”(GPIOx_TGL)中想要更改的位写“1”来实现。没被选择的位将不被更改。
2.3.3. 复用功能(AF)
芯片 IO 引脚通过多路选择器连接到片内外设,每个 IO 上同一时刻只能选通一个复用功能。每个 IO引脚有一个 2 输入的多路选择器连接到复用功能(AF0~AF1),通过配置 GPIOx_AFRH/L 选择功能。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。如果软件把一个 GPIO 脚配置成复用输出功能,它的输出将不确定。
2.3.4. GPIO 锁定机制
锁定机制允许在 GPIO 控制寄存器 GPIOx_LCK 上执行一串锁定程序,然后把 GPIO 的状态锁定,一旦 GPIO 状态被锁定,将不可改变,直到复位。被锁定的寄存器有(GPIOx_MODE, GPIOx_OTYPE,GPIOx_OSPEED, GPIOx_PUPD, GPIOx_AFRL and GPIOx_AFRH)。锁定序列参考 GPIOx_LCK 寄存器描述 。
2.3.5. 输入配置
当 IO 端口配置为输入时
• 输出缓存器被禁止
• 根据输入配置(上拉、下拉或浮空)的不同,弱上拉和下拉电阻被连接
• 出现在 IO 脚上的数据在每个 APB 时钟被采样到输入数据寄存器
• 对输入数据寄存器的读访问可得到 IO 状态
2.3.6. 输出配置
当 IO 端口被配置为输出时
• 输出缓冲器被激活开漏模式:输出寄存器上的“0”激活 N-MOS,而输出寄存器上的“
1”将端口置于高阻态(P-MOS从不被激活)推挽模式:输出寄存器上的“0”激活 N-MOS,而输出寄存器上的“1”将激活 P-MOS。
• 施密特触发输入被激活
• 弱上拉和下拉电阻被禁止 CIU32M010、CIU32M030
• 出现在 IO 脚上的数据在每个 APB 时钟被采样到输入数据寄存器
• 在开漏模式时,对输入数据寄存器的读访问可得到 IO 状态
• 在推挽模式时,对输出数据寄存器的读访问得到后一次写的值
2.3.7. 模拟输入配置
当 IO 端口被配置为模拟输入配置时
• 输出缓存器被禁止
• 禁止施密特触发输入,实现了每个模拟 IO 引脚上的零消耗。施密特触发输出值被强制为“0”
• 弱上拉和下拉电阻被禁止
• 读取输入数据寄存器时数值为“0”
2.3.8. 复用功能配置
对 IO 端口进行编程作为复用功能时
• 在开漏或推挽式配置中,输出缓冲器被打开
• 内置外设的信号驱动输出缓冲器 (复用功能输出)
• 施密特触发输入被激活
• 弱上拉和下拉电阻被禁止
• 在每个 APB 时钟周期,出现在 IO 脚上的数据被采样到输入数据寄存器
• 开漏模式时,读输入数据寄存器时可得到 IO 口状态
• 在推挽模式时,读输出数据寄存器时可得到后一次写的值