初中生
最后登录1970-1-1
在线时间 小时
注册时间2015-1-16
|
int main(void)
{
int i;
LED_GPIO_Config();
USART1_Config();
DMA1_ADC1_Config();
ADC1_Init();
DMA1_USART1_Config();
printf("\rHello Word\n");
ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3; // ¶áè¡×a»»μÄADÖμ
for(i=0;i<SENDBUFF_SIZE;i++)
{
SendBuff[i] = ADC_ConvertedValue;
printf("\r\n The current AD value = 0x%04X \r\n", ADC_ConvertedValue);
printf("\r\n The current AD value = %f V \r\n",ADC_ConvertedValueLocal);
Delayms(62500);
}
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
// Delayms(62500);
while (1)
{
LED1(ON);
Delayms(6250);
LED1(OFF);
Delayms(6250);
}
}
这是我参照野火的例程写的一个程序,就是用DMA1通道1读取ADC1采集到的电压值并将其存入内存中,再通过DMA1通道4读取该值并且用串口USART1上传至上位机,同时让LED1闪烁。ADC和DMA的配置没有问题,可以在串口助手上看到电压值,电压值没有问题,但是灯不会闪。关掉串口后开发板上的串口灯灭了,过了一会儿灯闪烁了,打开串口后接受到的值都是00(HEX显示)。调试设置断点,发现STM32一直卡在for循环里面,有没有人知道或者遇到过这样的问题,DMA传输数据时不是和CPU没有干涉么?
|
|