|
int main(void)
{
Stm32_Clock_Init(9);
uart_init(72,9600);
delay_init(72);
LED_Init();
KEY_Init();
ADC_Init();
OSInit();
OSTaskCreate(Start_Task, (void *)0, &Start_TaskStk[TASK_STK_SIZE-1], 5);
OSStart();
}
void Start_Task(void *p_arg)
{
sem1=OSSemCreate(0);
sem2=OSSemCreate(0);
/*建立用户任务*/
OSTaskCreate(LED1_Task, (void *)0, &LED1_TaskStk[TASK_STK_SIZE-1], 10);
OSTaskCreate(LED2_Task, (void *)0, &LED2_TaskStk[TASK_STK_SIZE-1], 6);
/*挂起开始任务*/
OSTaskSuspend(5);
}
void LED1_Task(void *p_arg)
{
while(1)
{
if(KEY_Scan(0) == KEY_LEFT)
{
OSSemPost(sem1);
}
OSTimeDlyHMSM(0,0,0,50);
}
}
void LED2_Task(void *p_arg)
{
u16 adcx;
float temp;
while(1)
{
OSSemPend(sem1,0,&err);
adcx = Get_Adc_Average(11,10);
temp=(float)adcx*(3.3/4096);
printf("The ADC value is : %f V.\r\n",temp);
}
}
红色字体的两个变量设置成全局变量,输出的ADC正常,但变成局部变量后,计算结果正确,但串口发到PC显示出来的结果不对,这是为什么?
|