1.代码基于上一期<ADC+FreeRTOS>做的修改,加上了显示屏的那个部分,这是有改动的部分
void ADC_PINMUX_INIT()
{
u16 TxBuf[10];
char cTxBuf[100];
u16 adc_average;
ADC_INIT_USER();
DMA_TX_INIT(DMA1_Channel1,(u32)&ADC1->RDATAR,(u32)TxBuf,10);
ADC_VAL();
while(1)
{
Delay_Ms(100);
adc_average=ADC_DATAOPER_AVERAGE(TxBuf,10);
sprintf(cTxBuf,"ADC:%04dMV",(adc_average*3300/4960));
printf("vcc:%04dmV\r\n",(adc_average*3300)/4096);
LCD_DispStr8x16(1, 1, cTxBuf);
}
}
void MULTITASKING_TASKS_INIT(void) {
GPIO_SYSTEM_INIT_2();
GPIO_SYSTEM_INIT();
LCD_Init();
/* create two task */
xTaskCreate((TaskFunction_t) MULTITASKING_TASKS1,
(const char*) "pcnames_task1", (uint16_t) TASK1_usstackdepth,
(void*) NULL, (UBaseType_t) TASK1_priority,
(TaskHandle_t*) &Task2Task_Handler);
xTaskCreate((TaskFunction_t) MULTITASKING_TASKS2,
(const char*) "pcnames_task2", (uint16_t) TASK2_usstackdepth,
(void*) NULL, (UBaseType_t) TASK2_priority,
(TaskHandle_t*) &Task1Task_Handler);
vTaskStartScheduler();
}
现象:
LED1闪烁点亮同时显示屏显示电压值,如果连接电脑串口,串口也有电压值显示。
改变ADC探针,电压会随之发生改变,同样通过显示屏和电脑串口显示出来。