花了點時間整理了一下以前在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...