1. 說明
參考的單板: stm32f429i_disc1
zephyr版本: zephyr v1.10.0
2. 驅動載入方法
1) uart pinmux驅動載入
pinmux.c (boards\arm\stm32f429i_disc1) // 引腳復用驅動最上層,呼叫sys_init註冊驅動
static const struct pin_config pinconf = ,
,#endif /* config_uart_stm32_port_1 */
};pinmux_stm32_init(struct device *port)
stm32_setup_pins(pinconf, array_size(pinconf)) // pinmux_stm32.c (drivers\pinmux\stm32), 該檔案為通用stm32引腳復用驅動
_pinmux_stm32_set
enable_port(stm32_port(pin), clk)
stm32_pin_configure(pin, func, func & stm32_afr_mask);// soc_gpio.c (arch\arm\soc\st_stm32\stm32f4), gpio配置最底層函式,直接操作暫存器
//soc_gpio.c包含如下函式
int stm32_gpio_configure(u32_t *base_addr, int pin, int conf, int altf)
int stm32_gpio_set(u32_t *base, int pin, int value)
int stm32_gpio_get(u32_t *base, int pin)
int stm32_gpio_enable_int(int port, int pin)
/* 驅動載入 */
sys_init(pinmux_stm32_init, pre_kernel_1, config_pinmux_stm32_device_initialization_priority);
2) uart 驅動載入
uart_stm32.c (drivers\serial)
/* uart驅動api函式示例 */
static int uart_stm32_poll_in(struct device *dev, unsigned char *c)
*c = (unsigned char)ll_usart_receivedata8(uartinstance);
return 0;
}/* 以下為uart 驅動api函式,它們將呼叫stm32f4xx_ll_usart.h (ext\hal\st\stm32cube\stm32f4xx\drivers\include)中的uart操作函式,
並呼叫stm32l4xx.h (ext\hal\st\stm32cube\stm32l4xx\soc)中的巨集直接操作暫存器,完成uart資料收發等操作 */
static const struct uart_driver_api uart_stm32_driver_api = ;
/* uart 初始化 */
static int uart_stm32_init(struct device *dev)
#define uart_device_init_stm32(type, n, apb)\
stm32_uart_irq_handler_decl(n);\
\static const struct uart_stm32_config uart_stm32_dev_cfg_##n = ,\
stm32_clock_uart(type, apb, n),\
};\\
static struct uart_stm32_data uart_stm32_dev_data_##n = \
}\};\
\device_and_api_init(uart_stm32_##n, config_uart_stm32_port_##n##_name,\
&uart_stm32_init,/* uart 初始化,設定時鐘波特率,資料位等 */\
&uart_stm32_dev_data_##n, &uart_stm32_dev_cfg_##n,\
pre_kernel_1, config_kernel_init_priority_device,\
&uart_stm32_driver_api); /* uart 驅動api */\
\stm32_uart_irq_handler(n)
#ifdef config_uart_stm32_port_1 // 如果定義config_uart_stm32_port_1,則載入uart1的驅動
uart_device_init_stm32(usart, 1, apb2)
#endif/* config_uart_stm32_port_1 */
3. 使用方法
1) 配置
# stm32f429i_disc1_defconfig (boards\arm\stm32f429i_disc1)
# enable usart1 - passthrough to stlink v2 connector
config_uart_stm32_port_1=y
# enable pinmux
config_pinmux=y
//stm32f429i_disc1.dts (boards\arm\stm32f429i_disc1)5662017/12/9
/ ;};
/* uart 配置 */
&usart1 ;
2) 使用
直接呼叫printk/putc/puts/fputs等函式
驅動及驅動程式的作用
驅動程式 驅動程式是硬體廠商根據作業系統編寫的配置檔案,是新增到作業系統中的一小塊 其中包含有關硬體裝置的資訊。當你安裝新硬體時,驅動程式是一項不可或缺的元件。可以說沒有驅動程式,計算機中的硬體就無法工作。有了驅動程式中的這些資訊,計算機就可以與裝置進行通訊。作業系統不同,硬體的驅動程式也不同,各個...
mongo分片及驅動
在三颱機器上如下配置,其中檔名稱,ip,埠可作相應更改。1 拷貝程式到 opt 下,建立分片配置檔案。shard21.conf dbpath data shard21 logpath data shard21.log pidfilepath opt mongodb shard21.pid direc...
Fastboot驅動及安裝
手機可以進入fastboot模式,開發板通過暫停啟動,輸入fastboot也可以進入fastboot模式。有些cpu是需要fastboot,有些不需要。首先我們需要了解哪些手機需要安裝fastboot驅動 小公尺 華為等廠商手機採用的高通 海思 英偉達處理器屬於fastboot平台,需要安裝fast...