rt thread的PIN裝置的啟動

2021-10-12 02:14:44 字數 2671 閱讀 1257

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