久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: GPIO控制流水燈的心得 [打印本頁]

作者: 51黑ren    時間: 2015-12-27 03:45
標題: GPIO控制流水燈的心得
    原來學習的STM32真的是太膚淺,覺得配置GPIO很簡單,用GPIO控制流流水燈也不過如此,今天我自己真正配置了一遍,才知道能學習的東西有很多。
      1、stm32f10x.h 這個函數才是ST公司的庫函數,平時調用的bsp_led.h是野火公司寫的用戶函數,所以還有寫程序不易直接調用,還要自己親自來寫。
      2、首先,在main.c中,調用的頭文件,必有#include "stm32f10x.h",其次就是自己寫的用戶函數。
      
     上面是我自己寫的用戶函數(PS:其實也是學來的)
        3、#ifndef __LED_H
             #define __LED_H
                .........
             #endif
             預處理,條件編譯。如果第一次已經編譯過了,防止重復編譯的代碼。
             __LED_H:這個部分寫什么都無所謂,這樣寫就是為了易懂程序。
        4、#define LED1_OFF  LED_OFF(GPIOB,GPIO_Pin_0)
             #define LED_OFF(p,i)  {p->BSRR=i;}
             對這兩句說明下,其他類似。
              其實也就是宏定義,其實也沒啥,p、i。也就是上一句的GPIOB,GPIO_Pin_0.
               在stm3f10x.h里面有他的宏定義 #defineGPIOB              ((GPIO_TypeDef *) GPIOB_BASE)
                                                                #defineGPIOB_BASE           (APB2PERIPH_BASE + 0x0C00)
              在stm32f10x_gpio.h中有他們的宏定義#defineGPIO_Pin_0                ((uint16_t)0x0001)
              歸根結底也就是用的寄存器操作,直接給寄存器相應的地址寫值。
              這樣寫使代碼看上去更加簡潔。
        5、#define LED1(a) if(a)   \
                              GPIO_SetBits(GPIOB,GPIO_Pin_0); \
                                             else  \
                             GPIO_ResetBits(GPIOB,GPIO_Pin_0)
               這一步,宏定義,為啥每一行后邊還有\呢?
                "\"用于#define中,就是表示這一行還沒有結束。






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品国产a | 一区二区三区欧美在线 | 国产aaaaav久久久一区二区 | 伊人色综合久久久天天蜜桃 | 国产毛片久久久久久久久春天 | 免费在线视频a | 亚洲不卡在线观看 | 国产精品久久久久久福利一牛影视 | 污视频在线免费观看 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 黑人粗黑大躁护士 | 性高湖久久久久久久久 | 国产成视频在线观看 | 成人免费在线视频 | 黄色av网站在线观看 | 日本高清视频网站 | 欧美成人a | 欧美日韩国产在线观看 | 成人在线看片 | 国产高清在线精品一区二区三区 | 一级欧美黄色片 | 超碰男人天堂 | 看一级黄色毛片 | www.天天干.com| 国产 日韩 欧美 中文 在线播放 | 欧美精品第一区 | 国产精品一区在线 | www.久久99 | 色www精品视频在线观看 | 视频一区在线观看 | 狠狠ri | 婷婷综合五月天 | 在线毛片网| 人人干免费 | 国产99视频精品免费播放照片 | 精品国产免费一区二区三区五区 | 欧美一级片 | 国产日批 | 91亚洲一区| 成人欧美日韩一区二区三区 | 国产毛片毛片 |