单片机学习(一):单片机基础—STM32

GPIO

IO四种输入工作模式

  • 输入浮空:多用于外部按键输入,在浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
  • 输入下拉:悬空0V
  • 输入上拉:悬空高电平
  • 模拟输入:AD采样,低功耗省电

IO四种输出工作模

  • 开漏输出:输出通过控制N-MOS管,无法直接到高电平状态
  • 推挽输出:输出经过控制N-MOS管和P-MOS管
  • 复用开漏:某个IO口正常是为了实现某个功能,复用成普通IO
  • 复用推挽:同上

定时器

STM32有8个16位定时器:

  • 基本定时器:TIM6、7
  • 通用定时器:TIM2、3、4、5
  • 高级定时器:TIM1、8

中断

STM32具有强大的异常响应系统,它把能够打断当前代码执行流程的事件分为异常(exception)和中断 (interrupt),并把它们用一个表管理起来,编号为-3~6的中断向量定义为系统异常,编号从7到19的为外部中断。
中断向量控制器——NVIC
NIVC只可以配置16种中断向量的优先级,由四位二进制数控制。

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组2

配置中断优先级有5组分配方式,上述代码的组数对应了用于配置抢占优先级的数据位数(抢占优先级从最高位开始配置)。
外部中断的配置

  1. 使能EXITx线的时钟和第二功能AFIO时钟
  2. 配置EXITx线的中断优先级
  3. 配置EXITx中断线I/O
  4. 选定要配置为EXIT的I/O口线和I/O口的工作模式
  5. EXTI中断线的工作模式配置。

中断处理函数
对于中断线0~4上产生的中断,可以用单独的函数名表示

EXTI0_IRQHandler  ;EXTI Line0
EXTI1_IRQHandler  ;EXTI Line1
EXTI2_IRQHandler  ;EXTI Line2
EXTI3_IRQHandler  ;EXTI Line3
EXTI4_IRQHandler  ;EXTI Line4

但是对于中断线5-9和中断线10-15上产生的中断都分别用两个函数名来表示

EXTI9_5_IRQHandler  ;EXTI Line9~5
EXTI15_10_IRQHandler  ;EXTI Line15~10

A/D D/A

AD

这里的AD不是普通攻击输出(Attack Damage)的意思,而是模拟转数字Analog-to-Digital Converter的缩写(AD和ADC口头上一般指一个意思)。
AD初始化需要配置数据对齐方式:.ADC_DataAlign:ADC转化后的数值被保存到数据寄存器(ADC_DR)的0-15位或16-32位,数据宽度为16位,而32内部AD的精度为12位,将12位数据放置进16位的区域中,就存在数据的对齐问题。左对齐:数值最高位与区域最高位对齐,低四位无意义;右对齐:数值最低位与区域最低位对齐,高四位无意义。

DA

单片机学习(一):单片机基础—STM32_第1张图片
DA部分主要是回答一个问题:为什么PA4是用作DA输出,却被设置成模拟输入模式?
因为使能DACx通道之后,响应的GPIO引脚就自动与DAC的模拟输出相连。设置为模拟输入,可以避免额外的干扰。

你可能感兴趣的:(单片机)