stm32l15x 系列中基本步驟是和stm32f10x相同的
一 配置gpio
初始化gpio時我們需要催一下內容進行配置(以下步驟沒有必然順序)
1 建立玩結構
gpio_inittypedef gpio_initstructure;
2 使能需要埠時鐘
/* enable gpios clock */
rcc_ahbperiphclockcmd(rcc_ahbperiph_gpioa | rcc_ahbperiph_gpiob |
rcc_ahbperiph_gpioc | rcc_ahbperiph_gpiod |
rcc_ahbperiph_gpioe | rcc_ahbperiph_gpioh, enable);
3 配置 gpio_initstructure 結構體成員(不同之處在這裡) 例:
/* configure the gpio_led pins */
gpio_initstructure.gpio_pin = ld_green_gpio_pin | ld_blue_gpio_pin;
gpio_initstructure.gpio_mode = gpio_mode_out;
gpio_initstructure.gpio_otype = gpio_otype_pp;
gpio_initstructure.gpio_pupd = gpio_pupd_nopull;
gpio_initstructure.gpio_speed = gpio_speed_2mhz;
gpio_init(ld_gpio_port, &gpio_initstructure);
gpio_low(ld_gpio_port, ld_green_gpio_pin);
二 分析
首先看一下stm32l15x 的 gpio_inittypedef 這個結構體
typedef struct
gpio_inittypedef;
每個結構體成員又是以列舉結構體(這是我的叫法……不知道是否準確啊 大家意會~嘿嘿)出現。
typedef enum
gpio_mode_in = 0x00, /*!< gpio input mode */
gpio_mode_out = 0x01, /*!< gpio output mode */
gpio_mode_af = 0x02, /*!< gpio alternate function mode */
gpio_mode_an = 0x03
/*!< gpio analog mode */
}gpiomode_typedef;
#define is_gpio_mode(mode) (((mode) == gpio_mode_in) || ((mode) == gpio_mode_out) ((mode) == gpio_mode_af)|| ((mode) == gpio_mode_an))
typedef enum
gpio_speed_400khz = 0x00, /*!< very low speed */
gpio_speed_2mhz = 0x01, /*!< low speed */
gpio_speed_10mhz = 0x02, /*!< medium speed */
gpio_speed_40mhz = 0x03 /*!< high speed */
}gpiospeed_typedef;
#define is_gpio_speed(speed) (((speed) == gpio_speed_400khz) || ((speed) == gpio_speed_2mhz) ((speed) == gpio_speed_10mhz)|| ((speed) == gpio_speed_40mhz))
typedef enum
gpiootype_typedef;
#define is_gpio_otype(otype) (((otype) == gpio_otype_pp) || ((otype) == gpio_otype_od))
typedef enum
gpiopupd_typedef;
#define is_gpio_pupd(pupd) (((pupd) == gpio_pupd_nopull) || ((pupd) == gpio_pupd_up) ((pupd) == gpio_pupd_down))
而 stm32f10x 就沒有分那麼多層次直接定義每種輸入輸出模式對應的值
typedef enum
gpiomode_typedef;
這是因為 stm32l15x 在硬體的輸出上也加上了上拉下拉的可選配置。這樣做是為了使用更靈活。使用者可在需要上拉輸出的時候直接配置gpio而不必在外圍電路增加元器件。
STM32F 使用的幾個要點
最近在使用stm32f103開展新專案的評估,接連著專案的維護,花去自己不少時間,哎.快樂地解決bug,希望以後的程式bug越少越好。1.swd介面 從 淘的jlink v8,不貴,直接將jlink連線評估板,能識別swd介面,但是提示 cpu core not found,這是由於兩者設定不一致的...
STM32F的幾種序列通訊匯流排總結
一 usart 通用同步非同步收發器 usart 提供了一種靈活的方法與使用工業標準nrz非同步序列資料格式的外部裝置之間進行全雙工資料交換。usart支援同步單向通訊和半雙工單線通訊,也支援lin 區域性網際網路 智慧卡協議和irda 紅外資料組織 sir endec規範,以及數據機 cts rt...
SPIFFS檔案系統移植 基於STM32F407
本帖最後由 huangxuejia 29212 於 2018 6 3 22 47 編輯 spiffs檔案系統,有什麼特別呢?從名字就可知,這是乙個用於spi flash的file system。現在好像在esp8266上用的很多,感覺慢慢有的人氣了。從特性上說,這個檔案系統用很少的ram資源。但是,...