支持f
This commit is contained in:
+28
-3
@@ -15,6 +15,24 @@ void DMA1_Channel1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast
|
||||
uint32_t adc_raw[4] = {0};
|
||||
|
||||
|
||||
void adc_covert(uint32_t *data)
|
||||
{
|
||||
float Vref = 0;
|
||||
float Vin = 0;
|
||||
float V3 = 0;
|
||||
float Bat = 0;
|
||||
|
||||
Vref = data[0] / 4096.0 * 3.3;//2.5V参考电压
|
||||
Vin = data[1] / 4096.0 * 3.3 * 2.0;
|
||||
V3 = data[2] / 4096.0 * 3.3 * 2.0;
|
||||
Bat = data[3] / 4096.0 * 3.3 * 11.0;
|
||||
|
||||
|
||||
printf("adc-f: %4.2f, %4.2f, %4.2f, %4.2f\n", Vref,Vin,V3,Bat);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void adc_init(void)
|
||||
{
|
||||
NVIC_InitTypeDef NVIC_InitStructure = {0};
|
||||
@@ -34,7 +52,7 @@ void adc_init(void)
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->RDATAR;//ADC地址
|
||||
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)adc_raw; //内存地址
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //方向(从外设到内存)
|
||||
DMA_InitStructure.DMA_BufferSize = sizeof(adc_raw); //传输内容的大小
|
||||
DMA_InitStructure.DMA_BufferSize = 4; //传输内容的大小
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址固定
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址增加
|
||||
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word ; //外设数据单位
|
||||
@@ -117,16 +135,23 @@ void DMA1_Channel1_IRQHandler(void)
|
||||
|
||||
if(DMA_GetFlagStatus(DMA1_IT_TC1))
|
||||
{
|
||||
printf("adc-dma: %4d, %4d, %4d, %4d\n", adc_raw[0],adc_raw[1],adc_raw[2],adc_raw[3]);
|
||||
|
||||
/* 失能DMA1通道1,以防在中断过程中发生DMA传输 */
|
||||
DMA_Cmd(DMA1_Channel1, DISABLE);
|
||||
|
||||
|
||||
//printf("adc-dma: %4d, %4d, %4d, %4d\n", adc_raw[0],adc_raw[1],adc_raw[2],adc_raw[3]);
|
||||
adc_covert(adc_raw);
|
||||
|
||||
|
||||
/* 如果DMA设置的是normal模式,需要手动重装计数器 */
|
||||
DMA1_Channel1->CNTR = 4;
|
||||
/* 清除中断标志位 */
|
||||
DMA_ClearITPendingBit(DMA1_IT_TC1);
|
||||
// DMA_ClearFlag(DMA1_FLAG_TC1);
|
||||
/* 重新使能DMA1通道1,开始工作 */
|
||||
|
||||
|
||||
|
||||
DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);
|
||||
DMA_Cmd(DMA1_Channel1,ENABLE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user