学号:14020520011 姓名:孟天玉
【嵌牛导读】:基于STM32的单片机部分基础学习
【嵌牛鼻子】:学习笔记、单片机、STM32
【嵌牛提问】:STM32有哪些基础模块?能实现什么功能?
【嵌牛正文】:
一.ADC与DAC
STM32F103的ADC模块主要有三个特点
1. 最多可以测量23个通道,由21个外部通道源和两个内部通道源组成
2. 单个ADC最大采样频率为1MHz,支持单次,连续、扫描、间断交替方式
3. 12位逐次逼近型数模转换器
STM32的ADC采样时间可以设置。转换周期Tcovn=采样时间+12.5个周期。
ADC-open/read读取通道上模拟电压值,输出12位整数(0~4095)/close
STM32F103的DAC模块主要有8个特点:同步更新功能,噪声波形生成,三角波形生成,WAV格式声音文件播放,双DAC通道同时或独立进行转换,每个通道都有DMA功能(Direct Memory Access,直接存储器存取),外部触发转换,输出电压可调
DAC-open/write写入12位整数转换为模拟信号/close
二.PWM
PWM就是利用占空比可调的数字脉冲来控制和驱动模拟电路以及外部器件。可应用于电机控制、数字开关电源等方面。
例如舵机旋转角度与PWM高占空比呈线性关系,因此可以改变PWM占空比来控制舵机。
PWM定时器配置过程如下:
1. 定时器初始化
2. 定时器输出通道映射
3. PWM工作模式设置
4.PWM允许输出到物理引脚
5. 开启定时器计数模式
6. 更新PWM的频率可占空比
三.中断
STM32F103共有60个可屏蔽中断可供用户编程使用,可分为两大类:外部中断和内部中断。其中,外部中断有19个,前16个与I/O口相连;后三个分别与PVD电源电压监测、RTC闹钟事件和USB唤醒事件相连。41个内部中断中最长用的是定时器中断,余下的一些是芯片内部一些特定模块事件处理中断。
中断产生的条件一般有两种:
1. 硬件中断:监测条件不确定事件的发生并处理,减小CPU负担。
2. 软件中断:条件满足时有程序主动发出中断消息,自动跳转至中断服务程序。
外部中断
STM32F103的外部中断一共有19个:
1.EXTI线0~15:与GPIOx口的0~15号引脚相连。
2. EXTI线16:与PVD电源电压检测输出相连,超出电压阈值范围产生中断
3. EXTI线17:与RTC闹钟事件相连
4. EXTI线18:与USB唤醒事件相连
EXTI线0~15采取一对多的规则:EXTI0只能与GPIOx(x=A~G)端口中的0号引脚相连,即同一时刻智能与7个端口中一个相连。以此类推。
将一个GPIO口设置为外部中断步骤如下:
1. I/O端口初始化
2. 设置I/O中断触发条件
3. 配置I/O的中断分组,设置优先级
4. 使能/禁止中断
5. 编写中断服务子程序
内部中断
内部中断是由STM32内部资源生成的中断事件,包括:定时器中断和特定功能模块中断。STM3F103中的定时器分为:基本定时器TIM6、TIM7;通用定时器TIM2~5;高级定时器TIM1,TIM8。
1. 基本定时器:
(1)只支持计数更新(溢出)中断。
(2)触发输出端可以直接连接到DAC的触发输入端,驱动DAC更新数值。
2. 通用定时器中断:
(1)支持计数更新(溢出)中断
(2)支持脉冲测量(捕获)
(3)支持脉冲生成(PWM)
(4)支持增量(正交)编码器与霍尔传感器的直接接入
3.高级定时器中断:除了通用定时器的功能,还加入了支持刹车信号输入与潜入死区时间互补的PWM信号生成等功能,使用较少。