Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Nano
移植控制台FinSH 代码报错 undefined reference "uart_init"
发布于 2020-05-18 23:12:49 浏览:1617
订阅该版
* 本帖最后由 NFTJ_8441 于 2020-5-18 23:14 编辑 * 大佬们好, 本人是个rt-thread新手,今天刚刚开始搞。我手头有个nucleo-F103RB的板子,按照 ”使用CubeMX 移植 RT-Thread Nano" 那个教程写了个LED闪烁程序。 不过我在根据 [在 RT-Thread Nano 上添加控制台与 FinSH](https://www.rt-thread.org/document/site/tutorial/nano/finsh-port/an0045-finsh-port/) 这个教程试着调试串口和FinSH的时候,遇到了一些问题。 我按照教程把 uart_init( ) 那个函数写在board.c 文件里自带的rt_hw_board_init函数里,然后把教程里说的这段代码: ```static UART_HandleTypeDef UartHandle; static int uart_init(void){ /* 初始化串口参数,如波特率、停止位等等 */ UartHandle.Instance = USART2; UartHandle.Init.BaudRate = 115200; UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE; UartHandle.Init.Mode = UART_MODE_TX_RX; UartHandle.Init.OverSampling = UART_OVERSAMPLING_16; UartHandle.Init.WordLength = UART_WORDLENGTH_8B; UartHandle.Init.StopBits = UART_STOPBITS_1; UartHandle.Init.Parity = UART_PARITY_NONE; /* 初始化串口引脚等 */ if (HAL_UART_Init(&UartHandle) != HAL_OK){ while(1); } return 0; } INIT_BOARD_EXPORT(uart_init); ``` 写在了CubeMX自动生成的main.c 文件里。结果编译时出错,说undefined reference to "uart_init" ```/Middlewares/Third_Party/RealThread_RTOS_RT-Thread/bsp/board.c:82: undefined reference to `uart_init' collect2: error: ld returned 1 exit status make: *** [makefile:48: rt-thread_test.elf] Error 1``` 这个应该是表明编译器找不到board.c 里头写的uart_init 的定义在哪里?这是为什么呢? 我附了一张CubeIDE里的文件图片。请各位大佬帮帮忙!多谢多谢 ![Screen Shot 2020-05-18 at 23.10.38.png](https://oss-club.rt-thread.org/uploads/202005/18/231151pumr3v313efhrtff.png)
查看更多
6
个回答
默认排序
按发布时间排序
NFTJ_8441
2020-05-19
这家伙很懒,什么也没写!
[i=s] 本帖最后由 NFTJ_8441 于 2020-5-19 14:02 编辑 [/i] 好像是我理解错了。uart_init 这个函数不应该手动写进board.c 的 rt_hw_board_init 函数里。 应该是 INIT_BOARD_EXPORT 这个宏自动把 uart_init 加入了rt_hw_board_init 的执行列表里。 不过现在代码没报错了,程序却还是没达到预期的效果。我还是必须得在main里手动调用uart_init才能够使用串口。如果不加的话,串口上根本看不见任何 rt_kprintf 打印的字符。 这是为什么呢? INIT_BOARD_EXPORT 没起作用吗?
NFTJ_8441
2020-05-19
这家伙很懒,什么也没写!
[i=s] 本帖最后由 NFTJ_8441 于 2020-5-19 14:38 编辑 [/i] 诶,但是[https://www.rt-thread.org/document/site/tutorial/nano/nano-port-principle/an0044-nano-port-principle/](Nano移植原理) 这个教程里说的也是要在board.c 里的 rt_hw_board_init 函数中调用uart_init 啊…… 这么一写,编译器就报undefined reference to uart_init 这个到底怎么用啊?
NFTJ_8441
2020-05-20
这家伙很懒,什么也没写!
[i=s] 本帖最后由 NFTJ_8441 于 2020-5-20 15:44 编辑 [/i] >可以用宏进行自动初始化,也可以调用该函数进行初始化,2选1 --- 我试了用INIT_BOARD_EXPORT 这个宏将uart_init 添加到自动初始化列表中,但是没效果,只能靠在rt_hw_board_init 那个函数里手动调用 uart_init。这个怎么debug呢?会是STM32CubeIDE 的问题吗?
NFTJ_8441
2020-05-20
这家伙很懒,什么也没写!
>有没有关闭自动初始化的功能呢?RT_USING_COMPONENTS_INIT 默认是开启的 --- 我看了看,RT_USING_COMPONENTS_INIT 是开启的。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.6k
关于作者
NFTJ_8441
这家伙很懒,什么也没写!
提问
3
回答
9
被采纳
0
关注TA
发私信
相关问题
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部