STM32的HAL库开发系列 - ADC中断

STM32的HAL库开发系列 - ADC中断

ADC_InitTypeDef结构体

typedef struct {
   uint32_t ClockPrescaler;        /*ADC时钟分频系数 */
   uint32_t Resolution;            /*ADC分辨率选择 */
   uint32_t DataAlign;             /*输出数据对齐方式 */
   uint32_t ScanConvMode;          /*扫描转换模式 */
   uint32_t EOCSelection;          /*转换结束标志使用轮询或者中断*/
   uint32_t ContinuousConvMode;    /*连续转换模式 */
   uint32_t NbrOfConversion;       /*规格转换序列数目 */
   uint32_t DiscontinuousConvMode; /*不连续采样模式 */
   uint32_t NbrOfDiscConversion;   /*不连续采样通道 */
   uint32_t ExternalTrigConv;      /*外部事件触发选择 */
   uint32_t ExternalTrigConvEdge;  /*外部事件触发极性 */
   uint32_t DMAContinuousRequests; /*DMA连续请求转换 */
} ADC_InitTypeDef;

转换结束中断

数据转换结束后,可以产生中断,中断分为四种:规则通道转换结束中断,注入转换通道转换结束中断,模拟看门狗中断和溢出中断。其中转换结束中断很好理解,跟我们平时接触的中断一样,有相应的中断标志位和中断使能位,我们还可以根据中断类型写相应配套的中断服务程序。

溢出中断

如果发生DMA传输数据丢失,会置位ADC状态寄存器ADC_SR的OVR位,如果同时使能了溢出中断,那在转换结束后会产生一个溢出中断。

模拟看门狗中断

当被ADC转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断,前提是我们开启了模拟看门狗中断,其中低阈值和高阈值由ADC_LTR和ADC_HTR设置。例如我们设置高阈值是2.5V,那么模拟电压超过2.5V的时候,就会产生模拟看门狗中断,反之低阈值也一样。

DMA请求

规则和注入通道转换结束后,除了产生中断外,还可以产生DMA请求,把转换好的数据直接存储在内存里面。要注意的是只有ADC1和ADC3可以产生DMA请求。

参考和引用:STM32F4xx参考手册、STM32F4xx规格书、野火开源项目、库帮助文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值