硬件原理图

程序:
int main(void)
{
//Flash_EnableReadProtection();//RDP设置 使能读保护
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_I2C1_Init();
MX_ADC1_Init();
MX_TIM2_Init();
MX_NVIC_Init();
HAL_TIM_Base_Start_IT(&htim2);
HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&adcbuf,2);
while(1)
{
}
}
void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */
/* DMA1_Channel1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
}
uint16_t adcbuf[2];//0,电池电压, 1,温度ADC
ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1;
void MX_ADC1_Init

该程序展示了如何在STM32微控制器上使用ADC和DMA来连续监测电池电压和温度。通过配置ADC扫描模式、DMA传输和中断,实现了对ADC通道的连续采样。采样数据存储在全局变量adcbuf中,分压公式用于计算实际电压值。程序还包括了HAL库初始化、时钟配置和GPIO设置等步骤。
3945

被折叠的 条评论
为什么被折叠?



