找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4724|回复: 2
打印 上一主题 下一主题
收起左侧

keil4调试时UART#1页面无显示

[复制链接]
跳转到指定楼层
楼主
ID:632608 发表于 2019-10-30 12:26 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
求助啊

Screenshot_2019-10-30-12-25-53-960_com.tencent.mobileqq.png (167.71 KB, 下载次数: 40)

Screenshot_2019-10-30-12-25-53-960_com.tencent.mobileqq.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:606366 发表于 2019-10-30 16:05 | 只看该作者
亲,首先检查一下RX与TX是不是交叉相连,如果不是请把代码先发出来,看一下有没有写错,最后,搜索半主机调试。
半主机是这么一种机制,它使得在ARM目标上跑的代码,如果主机电脑运行了调试器,那么该代码可以使用该主机电脑的输入输出设备。 
  这点非常重要,因为开发初期,可能开发者根本不知道该 ARM 器件上有什么输入输出设备,而半主基机制使得你不用知道ARM器件的外设,利用主机电脑的外设就可以实现输入输出调试。 
  所以要利用目标 ARM器件的输入输出设备,首先要关掉半主机机制。然后再将输入输出重定向到 ARM 器件上,如 printf 和 scanf,你需要重写 fputc和 fgetc 函数。下面就是将 scanf 和 printf 重定向到 uart 的代码。 
 

int fputc(int ch, FILE *f)  

    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 
    { 
    } 
    USART_SendData(USART1, (uint8_t) ch); 
    return ch; 


int fgetc(FILE *f)  

    int ch; 
    while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET) 
    { 
    } 
    ch = USART_ReceiveData(USART1); 
     
    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 
    { 
    } 
    USART_SendData(USART1, (uint8_t) ch); 
    return ch; 
}
printf() 之类的函数,使用了半主机模式。使用标准库会导致程序无法运行 ,以下是解决方法 :
方法 1.使用微库 ,因为使用微库的话 ,不会使用半主机模式 .
如果使用的是 MDK,请在工程属性的 “Target “- 》”Code Generation “中勾选 ”Use MicroLIB “这样以后就可以
使用 printf ,sprintf 函数了
方法 2.仍然使用标准库 ,在主程序添加下面代码 :
/*为确保没有从 C 库链接使用半主机的函数,因为不使用半主机,标准 C 库 stdio.h 中有些使用半主机的
函数要重新写 ,您必须为这些函数提供自己的实现 */

#pragma import(__use_no_semihosting)  // 确保没有从 C 库链接使用半主机的函数
_sys_exit(int  x) //定义 _sys_exit() 以避免使用半主机模式
{
x = x;
}
struct __FILE  // 标准库需要的支持函数
{
int handle;
};
/* FILE is typedef ’ d in stdio.h. */
FILE __stdout;

在独立应用程序中,您不太可能支持半主机操作。 因此,必须确保您的应用程序中没有链接 C 库半主机函数。
为确保没有从 C 库链接使用半主机的函数, 必须导入符号 __use_no_semihosting 。可在您工程的任何 C 或汇编语言源文件中执行此操作,如下所示:
在 C 模块中,使用 #pragma 指令:
#pragma import(__use_no_semihosting)
在汇编语言模块中,使用 IMPORT 指令:
IMPORT __use_no_semihosting
如果仍然链接了使用半主机的函数,则链接器会报告错误。
————————————————
版权声明:本文为CSDN博主「Robben.Han」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hxlawf/article/details/89491088
回复

使用道具 举报

板凳
ID:71883 发表于 2019-10-30 16:10 | 只看该作者
我的根本不能进入调试界面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表