在rt-thread-403上檢視
啟動**
; reset handler
reset_handler proc
export reset_handler [weak]
import __main
import systeminit
ldr r0,
=systeminit
blx r0
ldr r0,
=__main
bx r0
endp
指向到rt-thread啟動**,sub
subsu
b$main簡單說明就是先指向到這個main函式
/* re-define main function */
int $sub$$main
(void
)
進入rtthread_startup()
int
rtthread_startup
(void
)
進入rt_hw_board_init()
/**
* this function will initial stm32 board.
*/rt_weak void
rt_hw_board_init()
進入rt_hw_pin_init()
int
rt_hw_pin_init
(void
)
進入**_stm32_pin_ops**
const
static
struct rt_pin_ops _stm32_pin_ops =
;void
rt_pin_mode
(rt_base_t pin, rt_base_t mode)
void
rt_pin_write
(rt_base_t pin, rt_base_t value)
intrt_pin_read
(rt_base_t pin)
rt_base_t rt_pin_get
(const
char
*name)
return _hw_pin.ops->
pin_get
(name)
;}
這樣,pin驅動框架中的**和hal庫就聯絡起來了。
static
void
stm32_pin_mode
(rt_device_t dev, rt_base_t pin, rt_base_t mode)
/* configure gpio_initstructure */
gpio_initstruct.pin =
pin_stpin
(pin)
; gpio_initstruct.mode = gpio_mode_output_pp;
gpio_initstruct.pull = gpio_nopull;
gpio_initstruct.speed = gpio_speed_freq_high;
if(mode == pin_mode_output)
else
if(mode == pin_mode_input)
else
if(mode == pin_mode_input_pullup)
else
if(mode == pin_mode_input_pulldown)
else
if(mode == pin_mode_output_od)
hal_gpio_init
(pin_stport
(pin)
,&gpio_initstruct);}
static
void
stm32_pin_write
(rt_device_t dev, rt_base_t pin, rt_base_t value)
}static
intstm32_pin_read
(rt_device_t dev, rt_base_t pin)
return value;
}static rt_base_t stm32_pin_get
(const
char
*name)if(
(name[0]
!='p')||
(name[2]
!='.'))
if((name[1]
>=
'a')
&&(name[1]
<=
'z')
)else
for(i =
3; i < name_len; i++
) pin =
pin_num
(hw_port_num, hw_pin_num)
;return pin;
}
RT thread 裝置驅動元件之PIN裝置
在rt thread 2.0.0正式版中引入了pin裝置作為雜類裝置,其裝置驅動檔案pin.c在rt thread 2.0.1 components drivers misc中,主要用於操作晶元gpio,如點亮led,按鍵等。同時對於相應的晶元平台,需要自行編寫底層gpio驅動,如gpio.c。本文...
rt thread 串列埠裝置的配置流程
板級硬體初始化 系統定時器初始化 系統排程器初始化 建立初始化執行緒 元件初始化 定時器執行緒初始化 空閒執行緒初始化 系統排程器工作 串列埠裝置配置函式中遍歷要使用的串列埠裝置,做一些工作引數配置和裝置介面實現並註冊裝置 但在此不初始化裝置或不使能裝置 具體配置過程 1.註冊串列埠裝置,以便 fi...
RT Thread 串列埠裝置驅動
檔名 serial.c 驅動介面 1.註冊裝置 2.初始化裝置 3.開啟裝置 4.關閉裝置 5.讀操作 6.寫操作 1.註冊裝置 rt err t rt hw serial register rt device t device,const char name,rt uint32 t flag,st...