STM32驱动开发

概述

本文简单介绍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():

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值