为什么要用临界区保护,一般是因为防止任务执行到一半,被别人抢占了,举个简单的例子,比如UART发送数据.任务A想发送Hello,任务B要发送Tater,然后任务A发送了He后,被任务B抢占,结果最后输出可能是HeTallteor,根本不知道是什么东西.
为了验证,并且做这个实验,得先移植UART驱动.然而复用太厉害,要不用UART1,需要焊接,要不UART2,跟其他信号有冲突.只好拿PD5开刀.
好了,这些驱动先不说,看简单任务:
static void vTask1( void *pvParameters ) { for(;;) { printf("Are you sure? "); taskYIELD%