英文缩写 | 名称 | 英文缩写 | 名称 |
---|---|---|---|
NVIC | 嵌套向量中断控制器 | CAN | CAN通信 |
SysTick | 系统滴答定时器 | USB | USB通信 |
RCC | 复位和时钟控制 | RTC | 实时时钟 |
GPIO | 通用IO口 | CRC | CRC校验 |
AFIO | 复用IO口 | PWR | 电源控制 |
EXTI | 外部中断 | BKP | 备份寄存器 |
TIM | 定时器 | IWDG | 独立看门狗 |
ADC | 模数转换器 | WWDG | 窗口看门狗 |
DMA | 直接内存访问 | DAC | 数模转换器 |
USART | 同步/异步串口通信 | SDIO | SD卡接口 |
I2C | I2C通信 | FSMC | 可变静态存储控制器 |
SPI | SPI通信 | USB OTG | USB主机接口 |
- ALU: Arithmetic Logic Unit,算术逻辑单元
- GPIO: General Purpose Input/Output,通用输入/输出
- ADC: Analog-to-Digital Converter,模拟到数字转换器
- DAC: Digital-to-Analog Converter,数字到模拟转换器
- PWM: Pulse Width Modulation,脉宽调制
- UART: Universal Asynchronous Receiver-Transmitter,通用异步收发器
通信协议
- ==SPI====: Serial Peripheral Interface,串行外设接口==
- ==I2C====: Inter-Integrated Circuit,双线串行接口==
- CAN: Controller Area Network,控制器局域网 通信协议-汽车
- USB: Universal Serial Bus,通用串行总线
Others
- RTC: Real-Time Clock,实时时钟,掉电也可运行
- WDT: Watchdog Timer,看门狗定时器
- DMA: Direct Memory Access,直接内存访问
- IRQ: Interrupt Request,中断请求
- LED: Light Emitting Diode,发光二极管
- RTC: Real-Time Clock,实时时钟
- USB: Universal Serial Bus,通用串行总线
- MCU: Microcontroller Unit,微控制器单元
- NVIC:Nested Vectored Interrupt Controller嵌套向量中断控制器
- External interrupt/event controller (EXTI)外部中断/事件控制器
- Serial wire JTAG debug port (SWJ-DP)
- Systick:系统滴答定时器
- RCC复位和时钟控制
- AFIO 复用IO
- CRC校验
- PWR电源控制,睡眠模式
- BKP备份寄存器
- IWDG独立看门狗
- WWDG窗口看门狗,看门狗复位芯片
- SDIOSD卡接口
- FSMC可变静态存储控制器:扩内存,配成其他IO协议
- USB OTGUSB主机接口
各系列不一定有全部外设,查数据手册。
GPIO外设常见函数
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
复位某个GPIO
void GPIO_AFIODeInit(void);
复位某个AFIO
==void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
用结构体参数初始化GPIO==
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
给结构体变量赋默认值
GPIO读取函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
读取输入数据寄存器某位端口值
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
读取整个输入数据寄存器
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
看一下输出啥
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
GPIO写入函数
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
设置指定端口为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
置指定端口为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
根据第三个参数值设置指定端口
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
同时对16个端口写入
GPIO工作模式
typedef enum
{ GPIO_Mode_AIN = 0x0,
模拟输入
GPIO_Mode_IN_FLOATING = 0x04,
浮空输入
GPIO_Mode_IPD = 0x28,
下拉输入
GPIO_Mode_IPU = 0x48,
上拉输入
GPIO_Mode_Out_OD = 0x14,
开漏输出
GPIO_Mode_Out_PP = 0x10,
推挽输出
GPIO_Mode_AF_OD = 0x1C,
复用开漏
GPIO_Mode_AF_PP = 0x18
复用推挽
}GPIOMode_TypeDef;
同时初始化GPIO端口逻辑: 在十六进制中,按位或以后的数每一位相当于对应一个端口。 引脚定义中也是,把八进制转化成十六进制。 GPIO_Init_All 0xFFFF表示选中所有引脚 时钟控制,GPIO_SetBits等也可用按位或
PA15 PB3 PB4是JTAG调试端口,做普通还要另外配置