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...