stm32 ucos下串口不能发送数据

如题,如果使用串口,就会造成死机。一直停在while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);处,不知是哪设置... 如题,如果使用串口,就会造成死机。一直停在while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);处,不知是哪设置错了。估计是Startup.s出问题了。使用printf函数(使用Micro Lib)有如下提示:
.\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol __use_two_region_memory (referred from stm32f10x_startup.o).
.\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol __initial_sp (referred from entry2.o).
首先,不开串口OS运行正常。只要调用USART_SendData()函数就会一直在while处等待。用自己编写的字符串输出函数也不行。疑问有两处:
其一:为什么会停在此处,用MDK软件调试串口输出正常。
其二:使用MicroLIB为什么会有错误提示。
展开
 我来答
chenxuanjia123
2010-04-03
知道答主
回答量:10
采纳率:0%
帮助的人:15.8万
展开全部
问题一步步解决,

一直停在while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
不知是哪设置错了
说明UART状态标志位获取不正确,首先看UART的源代码,多看看初始化的流程图,是否完全一致,还得多看看那些控制寄存器,这也是写低屋的一些应有的步聚

使用printf函数,其实是在调用UART的应用,这个函数原形在网上很多地方能找到,这里面主要是用UART实现C语言里的printf()函数打印功能一样的,只是这里是通过UART送到PC上显示

使用printf函数(使用Micro Lib)有如下提示:
.\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol __use_two_region_memory (referred from stm32f10x_startup.o).
这个错误的意思是未定义"use_two_region_memory ",而这个错误是在STARTUP里面,你个你说得没错!
提示startup.o这人个信息,任何时候调试都要注意了,".O"这说明这是在汇编文件或在.H的头文件
我认为这是在Startup.s里面调用了一些没定义的变量

.\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol __initial_sp (referred from entry2.o
这错误的信息和上面类似:initial_sp 这个变量未定义, 而文件是在entry2里面

解决这个种问题
首先从低层开始:
1.把其它功能都disable,only enable UART(串口)的功能,看能否打印;
如果不能说明串口程序的问题,解决方法:
a. 首先看源代码,也可以上STM32的官方网站找源代码
b. 看连接线,串口接收软件是否设好对应的BPS和COMS;

2.如果使用串口,就会造成死机,这也说明你UCOS能正常跑吗?最好用一个LED灯,闪来显示运行状态

说这些调试方法应该可以拿来到分了吧!谢谢了!有不明白给我EMAIL
handsomehot@foxmail.com
匹篮挎8k
2016-05-29
知道答主
回答量:37
采纳率:0%
帮助的人:7.6万
展开全部
问题一步步解决,

一直停在while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
不知是哪设置错了
说明UART状态标志位获取不正确,首先看UART的源代码,多看看初始化的流程图,是否完全一致,还得多看看那些控制寄存器,这也是写低屋的一些应有的步聚

使用printf函数,其实是在调用UART的应用,这个函数原形在网上很多地方能找到,这里面主要是用UART实现C语言里的printf()函数打印功能一样的,只是这里是通过UART送到PC上显示

使用printf函数(使用Micro Lib)有如下提示:
.\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol __use_two_region_memory (referred from stm32f10x_startup.o).
这个错误的意思是未定义"use_two_region_memory ",而这个错误是在STARTUP里面,你个你说得没错!
提示startup.o这人个信息,任何时候调试都要注意了,".O"这说明这是在汇编文件或在.H的头文件
我认为这是在Startup.s里面调用了一些没定义的变量

.\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol __initial_sp (referred from entry2.o
这错误的信息和上面类似:initial_sp 这个变量未定义, 而文件是在entry2里面

解决这个种问题
首先从低层开始:
1.把其它功能都disable,only enable UART(串口)的功能,看能否打印;
如果不能说明串口程序的问题,解决方法:
a. 首先看源代码,也可以上STM32的官方网站找源代码
b. 看连接线,串口接收软件是否设好对应的BPS和COMS;

2.如果使用串口,就会造成死机,这也说明你UCOS能正常跑吗?最好用一个LED灯,闪来显示运行状态

说这些调试方法应该可以拿来到分了吧!谢谢了!有不明白给我EMAIL
handsomehot@foxmail.com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
离开000000000
2016-05-22
知道答主
回答量:1
采纳率:0%
帮助的人:1130
展开全部
只要你用的是原版的系统,应该不是操作系统的问题,你还是在你的程序里面找问题吧,看串口配置是否正确,看串口允许为,读写位,还有串口接收中断是否打开,最后看波特率是否匹配,只要这些都符合,应该是没什么问题的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨糖芯
2016-06-05
知道答主
回答量:3
采纳率:0%
帮助的人:3305
展开全部
只要你用的是原版的系统,应该不是操作系统的问题,你还是在你的程序里面找问题吧,看串口配置是否正确,看串口允许为,读写位,还有串口接收中断是否打开,最后看波特率是否匹配,只要这些都符合,应该是没什么问题的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老牛噶瓜47
2016-05-14
知道答主
回答量:3
采纳率:0%
帮助的人:3328
展开全部
能只要你用的是原版的系统,应该不是操作系统的问题,你还是在你的程序里面找问题吧,看串口配置是否正确,看串口允许为,读写位,还有串口接收中断是否打开,最后看波特率是否匹配,只要这些都符合,应该是没什么问题的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a0dec5d
2016-06-20 · 超过12用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:8.2万
展开全部
只要你用的是原版的系统,应该不是操作系统的问题,你还是在你的程序里面找问题吧,看串口配置是否正确,看串口允许为,读写位,还有串口接收中断是否打开,最后看波特率是否匹配,只要这些都符合,应该是可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式