源文件:

https://github.com/wangsanhust/STM32F429_Discovery_FreeRTOS_9/blob/master/Projects/Demo1/main.c

 

分析int main(void)程序构成:

int main(void)
{
  1.Hardware_Init();  //硬件初始化,本例中GPIO的使能、输出方式、输出速度、等。

  2.vTraceEnable(TRC_INIT);   //Trace初始化 
     vTraceEnable(TRC_START);   //Trace开启   Trace是什么?功能?  ???  留

  4.xTaskCreate();    //创建任务1,指向一个无限循环函数ToggleLED1_Task,设置优先级3);

    xTaskCreate();    //创建任务2,指向一个无限循环函数ToggleLED2_Task,设置优先级2)。

  4.vTaskStartScheduler();   //开始任务调度。

  5.for( ; ; );    //???

}

 

 

分析void ToggleLED1_Task(void *pvParameters)函数:

void ToggleLED1_Task(void *pvParameters)  //toggle 触发器
{
    int led = 0;  //设一个灯的状态量

    while (1) 
    {
        if(led == 0)
        {
            Red_LED_On();
            led = 1;
        } 
        else
        {
            Red_LED_Off();
            led = 0;
         }
        vTaskDelay(1000 / portTICK_RATE_MS);    //灯的状态改变一次延时1000ms
  }
}

 

分析void Red_LED_On(void)、void Red_LED_Off(void)

void Red_LED_On(void)
{
//    GPIO_SetBits(GPIOG, GPIO_Pin_14);
    GPIOG->ODR |= 0x4000;        //按位 或 ,使某位置一,不改变其他位。0x4000即 0100 0000 0000 0000  (“1”使14位变为1)
}
 
void Red_LED_Off(void)
{
//    GPIO_ResetBits(GPIOG, GPIO_Pin_14);
  GPIOG->ODR &= 0xBFFF;          //按位 与 ,使某位清零,不改变其他位。0xBFFF即 1011 1111 1111 1111  (“0”使14位变为0)
}

//对GPG的数据寄存器里的GPG14置一或清零,以使该口输出1(亮)或0(灭)。

 

posted on 2017-09-30 17:46  王三hust  阅读(256)  评论(0编辑  收藏  举报