完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚开始学习rtthread,新手,看官方的例程,我想知道设备名字是怎么来的? 比如”uart3” “sd0”等,对于新手来说,给设备起名字是不是都需要先查看xxx_config.h文件里面的定义,例如,uart_config.h中的 #define UART6_CONFIG |
|
相关推荐
1个回答
|
|
对于各种外设的驱动来讲,通常在 drivers/drv_xxx.c 文件中的最后面找到对应的驱动的注册函数 rt_hw_xxx_init() 就能知道设备的名字了。
以串口设备为例:在文件 drivers/drv_usart.c 中 rt_hw_usart_init() 函数有如下代码 uart_obj[i].config = &uart_config[i]; uart_obj[i].serial.ops = &stm32_uart_ops; uart_obj[i].serial.config = config; /* register UART device */ result = rt_hw_serial_register(&uart_obj[i].serial, uart_obj[i].config->name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | uart_obj[i].uart_dma_flag , NULL); 里面有一个参数是 uart_obj[i].config->name 这个就是设备的名字,所以可以从 uart_obj 中找到,而 uart_obj 又和 uart_config 有关,所以这样一层一层找就能找到 UART1_CONFIG 最后就找到了 .name = "uart1" #define UART1_CONFIG { .name = "uart1", .Instance = USART1, .irq_type = USART1_IRQn, .tx_pin_name = BSP_UART1_TX_PIN, .rx_pin_name = BSP_UART1_RX_PIN, } 再比如说 SPI 设备 /* drivers/drv_spi.c */ int rt_hw_spi_init(void) { stm32_get_dma_info(); return rt_hw_spi_bus_init(); } static int rt_hw_spi_bus_init(void) { ... ... // 省略 result = rt_spi_bus_register(&spi_bus_obj[i].spi_bus, spi_config[i].bus_name, &stm_spi_ops); ... ... // 省略 } // spi_config 结构体 static struct stm32_spi_config spi_config[] = { #ifdef BSP_USING_SPI1 SPI1_BUS_CONFIG, #endif } // SPI1_BUS_CONFIG 的定义 #define SPI1_BUS_CONFIG { .Instance = SPI1, .bus_name = "spi1", } 按照同样的思路就可以找到其他设备的名字了 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
683 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2521 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1314 浏览 0 评论
1915 浏览 0 评论
1494 浏览 0 评论
74913 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 10:47 , Processed in 0.603978 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号