如何配置和使用STM32的ADC模拟看门狗功能
如何配置和使用STM32的ADC模拟看门狗功能1。引言在大多数STM32的ADC(模数转换器)中,有一个功能叫做模拟看门狗。在这篇文章中,我们将学习如何使用STM32Sub。。。
如何配置和使用STM32的ADC模拟看门狗功能
1.简介
在大多数STM32的ADC(模数转换器)中,都有一个称为模拟看门狗的功能。在本文中,我们将学习如何使用STM32CubeIDE工具进行配置,以及如何在应用程序中使用它。2.先决条件
- 硬件
- Micro USB电缆用于从主机为Nucleo板供电,并将代码加载到STM32中。
- 核苷酸-L496

- 软件:STM32CubeIDE
3.理论
在本文中,我们将使用STM32L496微控制器。如果您正在使用另一台STM32,请参阅参考手册,检查与本文中介绍的内容是否有任何差异。首先,让我们回顾一下ADC的模拟看门狗功能。模拟看门狗监测某些通道是否保持在配置的电压范围(窗口)内。

您可以定义一个低阈值和一个高阈值,如上所示,这将定义您的“窗口”或防护区域。在本文中,我们将使用AWD1(模拟看门狗1)并在特定的模拟通道上启用它。我们将使用PA4作为启用AED1的模拟通道。我们将定义一个低阈值和高阈值。12位ADC位的全范围转换为4096。
在本文中,我们将使用以下阈值:
高阈值:3000
低阈值:1000
如果ADC转换的模拟电压低于低阈值或高于高阈值,则设置AWD1模拟看门狗状态位。将在PA4上连接并使用电位计来测试模拟看门狗的检测。如果转换后的值在模拟看门狗窗口之外,我们将启用AWD1上的中断以生成中断。如果通道上的转换值在窗口之外,我们将打开Nucleo板的LED LD2和LD3。
4.步骤
-
打开STM32CubIDE
-
使用NUCLEO-L496ZG板创建新项目

-
为项目命名

-
单击Yes(是),用默认模式设置初始化所有外围设备

-
配置ADC1
我们将在第9频道PA4上进行连续转换模式。
ADC1可在STM32CubeIDE的引脚输出和配置选项卡中的“模拟”下找到。
-
启用ADC1通道9,这是PA4的备用功能
-
配置ADC1参数设置

-
更改通道9的采样时间

-
启用模拟看门狗1

-
配置模拟看门狗1
高阈值:3000
低阈值:1000
我们还将启用中断模式,以便在转换的通道在定义的窗口之外时生成中断。

-
启用ADC1中断

-
生成代码
-
添加代码
在main.c中,添加以下变量的声明:
/*用户代码开始PV*/__IO uint16_t uhADCxConvertedValue=0;/*报告ADC模拟看门狗状态的变量:*//*RESET<=>电压进入AWD窗口*//*SET<=>电压离开AWD窗口*/uint8_t ubAnalogWatchdogStatus=RESET;/*设置为模拟看门狗中断回调*//*用户代码结束PV*/
在用户代码第4节中,添加ADC模拟看门狗模式的回调功能:
/*用户代码开始4*/**@在非阻塞模式下进行简短的模拟看门狗回调。*@param hadc:ADC句柄*@retval None*/void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef*hadc){/*设置变量以向主程序报告模拟看门狗窗口外状态*//*。*/uhADCxConvertedValue=HAL_ADC_GetValue(&hadc1);ubAnalogWatchdogStatus=Set;}/*用户代码END 4*/我们需要添加代码来启动ADC转换。/*用户代码开始2*/if(HAL_ADC_Start_IT(&hadc1)!=HAL_OK){Error_Handler();}/*用户代码结束2*/现在我们在主功能上添加代码,根据模拟看门狗事件打开或关闭LED LD2和LD3。/*用户代码开始时*/WHILE(1){/*根据ADC转换结果打开/关闭LED2和LED3*//*-如果电压进入AWD窗口则关闭*//*–如果电压超出AWD窗口则打开*//*模拟看门狗状态变量设置为模拟看门狗*//*中断回调*/if(ubAnalogWatchdogStatus==set){HAL_GPIO_WritePin(GPIOB,LD3_Pin|LD2_Pin,GPIO_Pin_set);}else{HAL_GPIO_WritePin(GPIOB,LD3_Pin|LD2_Pin,GPIO_Pin_RESET);}ubAnalogWatchdogStatus=重置;HAL_延迟(1);/*用户代码结束时*/
-
准备硬件设置
-
构建项目,进入调试模式并运行代码

项目生成后,进入调试会话,然后单击“继续”图标运行代码。


现在,如果您更改电位计的位置,您将看到LED将打开和关闭,这取决于转换后的通道是否在模拟看门狗窗口之外。
5.链接
STM32CubeIDE-STM32集成开发环境-STMicroelectronicsNUCLEO-L496ZG-STM32Nucleo-144开发板,带STM32L496ZGMCU,支持Arduino、ST Zio和。。。
STM32L47xxx、STM32L48xxx、STM22L49xxx和STM32L44xxx基于Arm®的高级32位MCU-参考手册。。。
产品介绍-STM32L496xx-超低功耗Arm®Cortex®-M4 32位MCU+FPU,100 DMIPS,高达1MB Flas。。。
上一篇: 如何将printf函数重定向到用于调试消息的UART 下一篇: ThreadX信号量是如何工作的