概述
本文简单介绍STM32标准库下的部分驱动开发流程(F1系列芯片),扩展介绍部分重要的属性。
GPIO
复用功能
将某些功能复用到其他引脚上使用。
属性
引脚(GPIO_Pin):芯片对应的引脚。
速率(GPIO_Speed):输出驱动电路的响应速度,做输入时此功能无效。芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
模式(GPIO_Mode):共8种。
浮空输入(GPIO_Mode_IN_FLOATING) :信号直接输入到引脚,直接判断电平状态。适用于按键输入。
上拉输入(GPIO_Mode_IPU):在引脚接入上拉电路,故引脚默认高电平。适用于下拉中断。
下拉输入(GPIO_Mode_IPD):在引脚接入下拉电路,故引脚默认低电平。适用于上拉中断。
模拟输入(GPIO_Mode_AIN):引脚接入到某个外设上。适用于ADC功能。
开漏输出(GPIO_Mode_Out_OD):可以输出低电平,无法输出高电平,输出高电平时需要借助上拉电路。故可以通过上拉电路,提高输出的电平电压,适用于I2C等端口。
推挽输出(GPIO_Mode_Out_PP):输出的信号具有驱动能力。适用于LED等外设。
复用开漏输出(GPIO_Mode_AF_OD):同开漏输出,只是引脚具有复用功能。
复用推挽输出(GPIO_Mode_AF_PP):同推挽输出 ,只是引脚具有复用功能。
配置过程
1、使能GPIO时钟。
2、设置属性。
备注
引脚的属性该怎么设置,由硬件电路决定,软件需要适配硬件。比如某个引脚做输入功能,外部无任何上拉、下拉电路,则此引脚需配置成浮空输入。
ADC
STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于正常运行的程序,注入通道组相当于中断。注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才可以继续转换。
属性
ADC_Mode(操作模式):
双ADC模式下有效。
快速交替和慢速交替的区别在于前一个ADC转换完成后,后一个ADC需等待一段时间才启动,慢速交替模式下等待的时间更长。使用二者时,必须确保无注入通道组产生。
ADC_Mode_InjecSimult(同步注入模式):转换一个注入通道组,同时给另一个ADC提供同步触发,既两个ADC同时触发。两个ADC在同一个通道的采样时间不能重叠。
ADC_Mode_RegSimult(同步规则模式):转换一个规则通道组,同时给另一个ADC提供同步触发,既两个ADC同时触发。两个ADC在同一个通道的采样时间不能重叠。
ADC_Mode_FastInterl(快速交替模式):只适用于规则通道组(只能为一个通道)。
ADC_Mode_SlowInterl(慢速交替模式):只适用于规则通道组(只能为一个通道)。
ADC_Mode_AlterTrig(交替触发方式):只适用于注入通道组,当第一个触发产生时,第一个ADC通道组被转换;当第二个触发产生时,第二个ADC通道组被转换;以此交替重复。
ADC_Mode_Independent(独立模式):此模式下,双ADC不同步工作,每个ADC接口独立工作 。
ADC_Mode_RegInjecSimult(规则注入同步模式):规则组同步转换可以被中断,以启动注入组的同步转换。
ADC_Mode_RegSimult_AlterTrig(规则同步+交替触发模式):规则组同步转换可以被中断,以启动注入组的同步转换。在注入组转换时触发注入,最后一次的触发注入会被忽略。
ADC_Mode_InjecSimult_FastInterl(注入同步+快速交替模式)、 ADC_Mode_InjecSimult_SlowInterl(注入同步+慢速交替模式):一个注入事件可以中断一个交叉转换。这种情况下,交叉转换被中断,注入转换被启动,在注入序列转换结束时,交叉转换被恢复。
ADC_ScanConvMode(扫描模式):是否开启扫描,单通道无需扫描,设置为DISABLE,多通道需要扫描,设置为ENABLE。
ADC_ContinousConvMode(连续转换):一次转换完成后是否自动开始下一次。
DISABLE:不会连续转换;ENABLE:连续转换。
ADC_ExternalTrigConv(启动转换规则的外部事件):外部事件主要包含定时器通道、外部中断等。一般不通过外部事件触发转换,而是软件自动触发,设置为ADC_ExternalTrigConv_None。
ADC_DataAlign(数据对齐方式):ADC用16位寄存器保存数据,但是最大精度只有12位,故存在对齐方式,一般选择右对齐ADC_DataAlign_Right。设置左对齐可以在精度要求较低时提高程序的处理速度(网上资料),一般不采用。
ADC_NbrOfChanner(通道数量):有多少个通道就设置多少。一个ADC最多有16个通道。
配置过程
1、使能ADC时钟、对应的GPIO时钟
2、配置引脚为“模拟输入”模式。
3、设置属性。
4、设置ADC通道为规则通道组或注入通道组。
5、重置ADC校准。
6、重新校准ADC。
DMA(Direct Memory Access)
在RAM和I/O之间直接传输数据,无需CPU干预。
属性
DMA_PeripheralBaseAddr():
DMA_MemoryBaseAddr():
DMA_DIR():
DMA_BufferSize():
DMA_PeripheraInc():
DMA_MemoryDataSize():
DMA_PeripheralDataSize():
DMA_MemoryDataSize():
DMA_Mode():
DMA_Priority():
DMA_M2M():