STM32 標準化定義

2021-09-29 20:41:56 字數 4075 閱讀 1633

2. uart

3. i2c

4. spi

以led燈為例

#define led_num (3)	

// led的數量

typedef

enum

tled;

// led的列舉

// red

#define led1_gpio_pin gpio_pin_5

#define led1_gpio_port gpioc

#define led1_gpio_clk rcc_ahb1periph_gpioc

// green

#define led2_gpio_pin gpio_pin_4

#define led2_gpio_port gpioc

#define led2_gpio_clk rcc_ahb1periph_gpioc

// blue

#define led3_gpio_clk gpio_pin_6

#define led3_gpio_port gpiob

#define led3_gpio_clk rcc_ahb1periph_gpiob

#define led_on (1)

#define led_off (0)

// led埠號結構體,注意結構體的型別

gpio_typedef* led_port[led_num]=;

const uint16_t led_pin[led_num]=;

const uint32_t led_clk[led_num]=;

void

led_init

(tled led)

;void

led_on

(tled led)

void

led_off

(tled led)

;void

led_toggle

(tled led)

;// led翻轉

void

led_flash

(tled led, uint32_t ms, uint8_t count)

;// led閃爍,引數2閃爍間隔ms,引數3閃爍次數

#define uart_inte***ce			uart1

#define uart_clk rcc_apb2periph_uart1

#define uart_rx_port gpioa

#define uart_rx_port_clk rcc_apb2periph_gpioa

#define uart_rx_pin gpio_pin_5

#define uart_tx_port gpiob

#define uart_tx_port_clk rcc_apb2periph_gpioa

#define uart_tx_pin gpio_pin_6

#define uart_irq usart1_irqn

#define uart_irqhandler usart1_irqhandler

void

uart_init

(void);

/***************** 傳送乙個字元 **********************/

void

usart_sendbyte

( usart_typedef * pusartx, uint8_t ch)

/***************** 傳送字串 **********************/

void

usart_sendstring

( usart_typedef * pusartx,

char

*str)

while(*

(str + k)

!='\0');

/* 等待傳送完成 */

while

(usart_getflagstatus

(pusartx,usart_flag_tc)

==reset)

}/***************** 傳送乙個16位數 **********************/

void

usart_sendhalfword

( usart_typedef * pusartx, uint16_t ch)

///重定向c庫函式printf到串列埠,重定向後可使用printf函式

intfputc

(int ch, file *f)

///重定向c庫函式scanf到串列埠,重寫向後可使用scanf、getchar等函式

intfgetc

(file *f)

#define i2c_inte***ce			i2c1

#define i2c_clk rcc_apb2periph_i2c1

#define i2c_scl_port gpioa

#define i2c_scl_port_clk rcc_apb2periph_gpioa

#define i2c_scl_pin gpio_pin_5

#define i2c_sda_port gpiob

#define i2c_sda_port_clk rcc_apb2periph_gpioa

#define i2c_sda_pin gpio_pin_6

void

i2c_init

(void);

void

i2c_master_write

(uint8_t addr, uint8_t *buf, uint8_t len)

;// 從機位址、資料快取區、資料長度

void

i2c_master_read

(uint8_t addr, uint8_t *buf, uint8_t len)

;// 從機位址、資料快取區、資料長度

#define spi_inte***ce			spi1

#define spi_clk rcc_apb2periph_spi1

#define spi_scl_port gpioa

#define spi_scl_port_clk rcc_apb2periph_gpioa

#define spi_scl_pin gpio_pin_5

#define spi_miso_port gpiob

#define spi_miso_port_clk rcc_apb2periph_gpioa

#define spi_miso_pin gpio_pin_6

#define spi_mosi_port gpioa

#define spi_mosi_port_clk rcc_apb2periph_gpioa

#define spi_mosi_pin gpio_pin_7

#define spi_nss_port gpioa

#define spi_nss_port_clk rcc_apb2periph_gpioa

#define spi_nss_pin gpio_pin_8

#define spi_nss_high 1

#define spi_nss_low 0

#define spi_nss_enable gpio_writebit( spi_nss_port, spi_nss_pin, spi_nss_low);

#define spi_nss_disable gpio_writebit( spi_nss_port, spi_nss_pin, spi_nss_high);

void

spi_init

(void);

uint8_t spiinout

(uint8_t outdata)

;

初始STM32標準庫

庫檔案一開始包含五個檔案 htmresc libraries project utilities stm32f10x stdperiph lib um.chm下面一一介紹 裡邊只有兩張,一張cmsis的logo,另一張是st的logo 裡邊是st官方實驗板的例程,目前不會用到。這個是庫幫助文件,我們...

STM32的重複定義

最近在開發一款stm32f0的微控制器的專案,在寫程式的時候發現了一些關於重複定義的想法和問題。我在標頭檔案將資料變數進行了定義 ifndef usart h define usart h include sys.h define max rx length 50 u8 usart1 rx buf ...

關於STM32的變數定義

關於stm32的變數定義 分類 嵌入式系統 2014 10 15 19 03 983人閱讀 收藏 舉報 今天除錯程式時,想觀察一下變數的情況,突然發現平時經常移植別人程式時最容易忽略的乙個致命問題,那就是忽略變數型別,這裡有必要給大家一定知識啦,都是庫裡面的,非原創!3.0以後的版本中使用了cmsi...