zoukankan      html  css  js  c++  java
  • 分析Demo1闪灯例程里的main.c

    源文件:

    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(灭)。
  • 相关阅读:
    select_related与prefetch_related
    settings源码
    Django路由系统
    Django
    Django-下载安装-配置-创建Django项目-三板斧简单使用
    前端相关知识
    xadmin后台管理
    redis数据库
    ❥git❥-----协同开发,冲突解决 合并分支(项目中使用git)
    git的基本使用
  • 原文地址:https://www.cnblogs.com/wangsan-hust/p/7615749.html
Copyright © 2011-2022 走看看