历史上的今天
返回首页

历史上的今天

今天是:2025年01月26日(星期日)

2019年01月26日 | STM32->UART

2019-01-26 来源:eefocus

在使用STM32过程中,可能会因为没有定义好调试工具的连接管脚,例如JTAG和SW需要的管脚被程序重新初始化复用了,然后就没法调试变砖了,此时可以通过ISP的方式擦写flash,或者跳线重启,进入BootLoader模式用JLink下载新的程序或直接擦除MCU的flash,再把跳线改回来重启。


通过串口printf打印输出,添加C语言标准库文件:


#include "stdio.h"


根据编译器定义改写相关函数


#ifdef __GNUC__

  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif /* __GNUC__ */


根据自己的串口收发改写相应的函数:

int fputc(int ch, FILE *f)

{

     USART1->DR=(uint8_t)ch;

     while((USART1->SR&0X40)==0);

     return ch; 

}


int fputc(int ch, FILE *f) 

{

    Write_Usart1_C((uint8_t) ch);

    return(ch);

}


int fgetc(FILE *f)

{

  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

  {

     return (USART_ReceiveData(USART1));

  }

}



如果使用HAL库:

int fputc(int ch, FILE *f)

{

    HAL_UART_Transmit(&huart1 ,(uint8_t *)&ch, 1, 0xFFFF);    

    return ch;   

}


然后就可以使用C语言的标准输出:printf(" test good! \n");



在C99中printf原型:


  int __cdecl  printf(const  char * __restrict__ _Format,...)



在使用标准库和C99环境下,单纯改写fputc还不行,还需要:


struct __FILE { int handle; /* Add whatever you need here */ };

    FILE __stdout;

    FILE __stdin;

    缺少这个定义,编译会通过,但在程序跑起来调用printf()会直接死机,可能的原因是程序中有操作或定义过FILE指向,printf无法接受一个指向FILE的正确指针对象。修改后,应用中没有加#pragma import(__use_no_semihosting)也可以跑起来。


在STM32中,初始化TX输出模式:


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;


推荐阅读

史海拾趣

Erocore Enterprise Co Ltd公司的发展小趣事

随着技术实力的提升,Erocore开始积极拓展市场。公司凭借优质的产品和服务,逐渐在电子行业中树立了良好的品牌形象。通过与国内外知名企业的合作,Erocore的产品逐渐进入更广泛的市场领域。同时,公司也加大了市场营销力度,通过参加展会、举办研讨会等方式,提升品牌知名度和影响力。

ELMEC Technology Of America Inc公司的发展小趣事

在ELMEC Technology Of America Inc公司初创时期,创始人李明和他的团队面临着一个巨大的挑战:如何开发一款能在市场上脱颖而出的电子产品。经过无数次的实验和失败,他们最终成功研发了一款高效能、低功耗的半导体芯片。这款芯片的问世不仅为公司带来了第一笔可观的收入,也奠定了ELMEC在电子行业的技术领先地位。

Compostar Technology Co Ltd公司的发展小趣事

人才是企业发展的核心。Compostar Technology Co Ltd深知这一点,因此一直注重人才培养和团队建设。公司建立了完善的人才培训体系,为员工提供了广阔的职业发展空间。同时,公司还积极营造良好的企业文化氛围,激发员工的创新精神和团队合作精神。这些举措使得公司拥有一支高素质、高效率的员工队伍,为公司的持续发展提供了有力保障。

Dawn Electronics Inc公司的发展小趣事

随着市场的不断发展,Dawn Electronics Inc公司意识到技术创新的重要性。公司加大了研发投入,成立了专门的研发团队,积极探索新的技术方向。经过不懈的努力,公司成功研发出了一种新型的智能传感器,具有更高的精度和更低的功耗,这一创新技术迅速被市场接受,为公司带来了可观的收益。

ETI Systems公司的发展小趣事

ETI Systems公司自创立之初,就专注于研发具有创新性的电子产品和解决方案。在公司发展的早期,它推出了一款高性能的无线通信设备,该设备采用了当时最先进的信号处理技术,极大地提升了数据传输的效率和稳定性。这一创新产品不仅帮助ETI Systems在市场上获得了良好的口碑,也引领了整个行业的技术发展方向。

Alps Alpine Co Ltd公司的发展小趣事

随着公司业务的不断发展壮大,ETI Systems开始将目光投向国际市场。公司积极参加国际电子产品展览和技术交流活动,与来自世界各地的客户和合作伙伴建立了紧密的联系。同时,ETI Systems也加大了在海外市场的投入力度,通过设立分公司和办事处等方式,进一步拓宽了国际市场渠道。这种国际化战略的实施,为ETI Systems的持续发展注入了新的活力。

问答坊 | AI 解惑

WINCE下电话与IE共存问题!

嘿 各位:    现在我想在WINCE6.0下面做一个电话与IE共存的软件,想要做到当如果在下载数据或是浏览网页的时候有电话打进来需要挂住数据通道,电话接完后可以很快的浏览网页或是下载数据,以前我采用的方式是RAS函数库+AT指令方式,当想 ...…

查看全部问答>

关于CE下线程执行优先级的问题

{ ...... // 启动线程,开始播放声音, 并将线程的优先权设置为最高,希望它立即去执行 HANDLE m_hThread = CreateThread(NULL, 0, TOPlaySoundThread, NULL, 0, NULL); SetThreadPriority( m_hThread,THREAD_PRIORITY_TIME_CRITICAL); Sleep( ...…

查看全部问答>

请教高手printf和vprintf的问题

环境Vxworks 5.5.1 在相同的地方,如果使用printf可以正确打印,但是使用vprintf就会报如下错误:     CPU: Motorola MPC82xx ADS - HIP7    Runtime Name: VxWorks Runtime Version: 5.5.1     BSP version: 1 ...…

查看全部问答>

有关噪音传感器的问题

大师们好!     有谁能给我提供一些噪音传感器的商品介绍。加入测马路上的噪音应该用到什么样子灵敏度的噪音,有没有推荐的。     只有mic加放大器够用么?…

查看全部问答>

怎么使得CComboBox默认是上拉?

一般来说只要到屏幕底端有足够空间,就下拉. 如果没有足够空间就上拉. 那么应该存在的上拉这个功能. 我想让它自动默认的为上拉,该怎么做? 如果不行,也可以这样,让下拉菜单不要长出我的对话框的底端也可以…

查看全部问答>

LPC1114数据寄存器

最近又看了一下LPC1114的数据寄存器的内容。数据寄存器允许从被设置为输入的引脚上读取数据,往被设置输出的引脚写值。每个端口数据寄存器占用地址空间的0-0X3FFC,地址位13:2用于屏蔽。如图1:  原先一直对这个数据屏蔽作用搞不太懂,现在 ...…

查看全部问答>

求 邦华330 无线扩音器电路原理图!

邦华330改进版、 最新功能:数字收音,USB、SD读卡功能,数字显示屏,卡座功能           技术参数:   1.电源:AC220V 内置DC12V/1.2AH 蓄电池,外接VDC   2.频率范围:VHF165-265MHz   3.振 ...…

查看全部问答>

卖点多余下来的零散东西

大家好,最近整理了一下,整理出好多打样有没有使用,多余的东西。有继电器、各种芯片、可燃气体传感器等等好多种类,但是每种数量都很少,这里就不一一列举了。如果你需要,可以QQ我,告诉我你要的一些常用的东西,我尽量帮你找,一次性处理,想收 ...…

查看全部问答>

版主jishuaihu, 小小白, 江汉大学南瓜帮忙看看

https://bbs.eeworld.com.cn/thread-308442-1-1.html 此贴貌似冒的人看啊!给新人一点帮助嘛!…

查看全部问答>

电化学酒精传感器

各位朋友,那位大哥了解这个内传感器,找遍了国内做传感器的都没有做这个传感器,小弟愚昧到目前还没有这类传感器的具体型号.各位在传感器行业做了很久,应该有所了解有个项目要做个酒精检测仪器不能用常见那个半导体气敏传感器!现在头大啊!求各位帮帮 ...…

查看全部问答>