使用C 開發stm32程式之GPIO篇

2021-08-17 06:36:18 字數 4357 閱讀 4027

花了點時間整理了一下以前在eclipse環境下使用c++寫的stm32程式,此篇內容為gpio操作部分,其他部分後續有時間會逐步放到csdn部落格中分享出來,免得以後從事其他行業工作了,荒廢了以前那麼努力摸索出來的寶貴經驗

/*

* gpio.h

* * created on: 2023年3月19日

* author: oyoung

*/#ifndef gpio_h_

#define gpio_h_

namespace stm32 port;

typedef

enum pin;

typedef

enum mode;

typedef

enum iomode;

gpio(port);

gpio(port port, pin pin);

/*** 設定輸出值

*/void

set(int value);

/*** 獲取輸入值

*/int get() const;

/*** 獲取輸出值

*/int output() const;

/*** 設定埠的輸入輸出模式

*/void setmode(mode mode, iomode iomode);

/*** 上拉,輸出1

*/void up();

/*** 下拉, 輸出0

*/void down();

virtual ~gpio();

private:

int portvalue() const;

int portoutput() const;

int pinvalue() const;

int pinoutput() const;

void setportvalue(int value);

void setpinvalue(int value);

private:

port _port;

pin _pin;

};} /* namespace stm32 */

#endif /* gpio_h_ */

/*

* gpio.cpp

* * created on: 2023年3月19日

* author: oyoung

*/#include "gpio.h"

#include "stm32f10x_gpio.h"

#include "stm32f10x_rcc.h"

namespace stm32 ;

static uint32_t rcc = ;

gpio::gpio(port port)

: _port(port), _pin(pin_all)

gpio::gpio(port port, pin pin)

: _port(port), _pin(pin)

void gpio::set(int value) else

}void gpio::setportvalue(int value)

void gpio::setpinvalue(int value)

int gpio::get()const

int gpio::portvalue() const

int gpio::pinvalue() const

int gpio::output() const

void gpio::setmode(mode mode, iomode iomode) else

}int gpio::portoutput() const

int gpio::pinoutput() const

void gpio::up()

void gpio::down()

gpio::~gpio()

int log2(unsigned

int value)

} /* namespace stm32 */

/*

* gpio.h

* * created on: 2023年3月19日

* author: oyoung

*/#ifndef gpio_h_

#define gpio_h_

namespace stm32 port;

typedef

enum pin;

typedef

enum mode;

typedef

enum outputtype;

typedef

enum outputspeed;

typedef

enum pullupdown;

typedef

enum aftype;

gpio(port);

gpio(port port, pin pin);

/*** 設定輸出值

*/void

set(int value);

/*** 翻轉

*/void toggle();

/*** 獲取輸入值

*/int get() const;

/*** 獲取輸出值

*/int output() const;

/*** 設定埠的輸入輸出模式

*/void setmode(mode mode, pullupdown updown, outputtype otype = otype_pushpull, outputspeed ospeed = ospeed_fast);

void setaftype(aftype type);

/*** 上拉,輸出1

*/void up();

/*** 下拉, 輸出0

*/void down();

virtual ~gpio();

private:

int portvalue() const;

int portoutput() const;

int pinvalue() const;

int pinoutput() const;

void setportvalue(int value);

void setpinvalue(int value);

private:

port _port;

pin _pin;

};} /* namespace stm32 */

#endif /* gpio_h_ */

/*

* gpio.cpp

* * created on: 2023年3月19日

* author: oyoung

*/#include "hardware/gpio.h"

#include "stm32f4xx_gpio.h"

#include "stm32f4xx_rcc.h"

namespace stm32 ;

static uint32_t rcc = ;

gpio::gpio(port port)

: _port(port), _pin(pin_all)

gpio::gpio(port port, pin pin)

: _port(port), _pin(pin)

void gpio::set(int value) else

}void gpio::toggle()

void gpio::setportvalue(int value)

void gpio::setpinvalue(int value) else

}int gpio::get()const

int gpio::portvalue() const

int gpio::pinvalue() const

int gpio::output() const

void gpio::setmode(mode mode, pullupdown updown, outputtype otype, outputspeed ospeed)

void gpio::setaftype(aftype type)

int gpio::portoutput() const

int gpio::pinoutput() const

void gpio::up()

void gpio::down()

gpio::~gpio()

int log2(unsigned

int value)

} /* namespace stm32 */

USB裝置開發之STM32

根據專案的開發進度要求,接下來的主要階段是開發usb裝置和上位機pc的通訊。主要包括 usb硬體開發 驅動開發和軟體開發。1 硬體開發 由於時間緊迫,電子組的硬體還未完成,所以這部分先用手頭上的stm32的usb來除錯驅動程式和上位機應用程式。這部分主要完成韌體程式的編寫。2 驅動程式開發 usb藉...

STM32 Mac開發STM32之邏輯分析儀

在微控制器 嵌入式硬體開發時,邏輯分析儀是乙個非常常用的工具。它用來捕獲數碼訊號,開發者通過專用軟體,圖形化訊號,並按照相應協議分析軟體或硬體中的錯誤。在分析時序問題時,比如uart iic spi can hdmi cec等資料時,應用邏輯分析儀快速解決問題 本例子使用saleaelogic8來分...

STM32 程式入口

stm32的啟動需要依賴啟動檔案,不同編譯器的啟動檔案不同,這裡以startup stm32f407xx.s為例,它主要進行了以下工作 復位子程式是系統上電後第乙個執行的程式 reset handler reset handler proc export reset handler weak imp...