历史上的今天
返回首页

历史上的今天

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

正在发生

2019年01月17日 | STM32学习记录——printf函数重定位

2019-01-17 来源:eefocus

功能: 

重定位printf函数,使printf作为串口打印输出函数。代替usart_send_string()函数


步骤: 

usart.c中包含USART初始化函数 

1、USART初始化(使能时钟、使能GPIO、GPIO和USART初始化) 

2、打开USART 

3、在usart.c中加入如下代码


#ifdef __GNUC__ 

    /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 

     set to 'Yes') calls __io_putchar() */ 

  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) 

#else 

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

#endif /* __GNUC__ */ 


/*******************************************************************************

* Function Name  : PUTCHAR_PROTOTYPE

* Description    : Retargets the C library printf function to the USART.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/

PUTCHAR_PROTOTYPE

{

   while (!(USART1->SR & USART_FLAG_TXE));

   USART1->DR = (ch & 0x1FF);


   return ch;

}


4、在usart.h中添加头文件


推荐阅读

史海拾趣

喜美克斯(Cvilux)公司的发展小趣事

喜美克斯公司深知人才是企业发展的核心动力。因此,他们高度重视人才的引进和培养。公司建立了一套完善的人才选拔和培养机制,通过内部培训、外部引进等多种方式,不断为公司注入新鲜血液。同时,公司还为员工提供广阔的职业发展空间和优厚的福利待遇,激发了员工的工作热情和创造力。这些举措为喜美克斯公司的长期发展提供了坚实的人才保障。

Dell公司的发展小趣事

喜美克斯(Cvilux)公司自创立之初,就以其对电子技术的深刻理解和创新精神在行业中崭露头角。公司的创始人是一位电子工程领域的资深专家,他带领着一支充满激情的年轻团队,针对当时市场上电子产品的一些痛点,开始研发具有自主知识产权的新技术。经过数月的努力,他们成功开发出了一款具有高效能、低功耗特点的电子芯片,这一创新技术迅速获得了市场的认可,为喜美克斯公司的发展奠定了坚实的基础。

铨力(ALLPOWER)公司的发展小趣事

为了进一步提升综合竞争力,铨力公司开始着手深化产业链整合。通过收购、合作等方式,公司逐渐掌握了从原材料供应、产品生产到销售终端的完整产业链。这一举措不仅降低了生产成本,提高了生产效率,还为公司带来了更多的利润增长点。

Dearborn Electronics Inc公司的发展小趣事

随着技术的不断进步,Dearborn Electronics Inc.不断投入研发,推出了一系列具有创新性的产品,如钽电容、陶瓷电容器等。这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。同时,公司也积极拓展市场,将产品销售到全球各地,特别是医疗、石油、交通、工业等严苛应用领域。

BEI Sensors公司的发展小趣事

自上世纪80年代起,Beckhoff便将基于PC的自动化新技术作为公司的发展理念。通过不断研发和创新,公司成功地将工业PC、现场总线模块、驱动产品和控制软件等整合为一套完整的、相互兼容的控制系统。这一创新为工控领域带来了革命性的变革,使得工业自动化系统更加开放、灵活和高效。

BENCENT公司的发展小趣事

BENCENT公司在成立之初,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。创始人带领团队夜以继日地研发,通过不断尝试和改进,终于成功开发出了一款具有竞争力的电子产品。这款产品凭借其高性能和创新性,在市场上获得了初步认可,为公司的后续发展奠定了基础。

问答坊 | AI 解惑

UART的设计

谁知道用FPGA设计uart电路吗? 除了它在传输时,每一个字节的起始位和结束位之外,他的传输协议怎么设计比较好。 如果用串口助手发送,怎么接收?…

查看全部问答>

向坛有征询,5月份我们工控版块讨论点啥?

春暖花开的四月过去了,进入夏季的5月,我们工控爱好者要讨论点啥东西?请大家热议!…

查看全部问答>

求TC35外围电路连接图及收发短信源代码

求TC35外围电路连接图及收发短信源代码 !! 各位大虾帮帮忙吧,刚接触这东西,急需这些来熟悉熟悉,买了个TC35模块,想自己焊个板子玩下。 如果有的话,麻烦发我邮箱fjchen_ok@126.com 谢谢了~…

查看全部问答>

大家有玩过camera模块的没有

我现在在用三星的ARM11做一个项目,要用到camera模块,有做过的在这里留下个联系方式啊。…

查看全部问答>

用过MC9328MXL的请进

各位大侠:     小弟正用MC9328MXL CPU。第一次接触。请大侠们介绍一下。     还有,我想用程序管理CPU上的电池芯片。请问这款CPU上的电池芯片是什么型号的?官方网站地址是什么?    谢谢!!!…

查看全部问答>

急!!!!!!!!!!!!!(高分请教!!!)EVC中得到ADO连接对象对应ClassID总是有问题

我的程序在运行到获得ADO对象对应的classID的时候,总是不能成功,不知道为什么?麻烦指点一下. m_ProgID = _T (\"ADOCE.Connection.3.1\"); CLSID        m_ClsID; hr = CLSIDFromProgID(m_ProgID, &m_ClsID); if(FAILED ...…

查看全部问答>

TI阅读:电压参考如何影响 ADC 性能,第 1 部分

本帖最后由 dontium 于 2015-1-23 11:40 编辑 这个是英文版的,没发现中文版,有牛人自制中文版的,发上来贡献下。 …

查看全部问答>

紧急求助!

我在用ccsv5.3时碰到这种情况,连上开发版以后会提示update,然后就出现这个了:MSP-FET430UIF Firmware erased - Bootloader active。请问大侠们这个是怎么个情况…

查看全部问答>

bootloader

Msp430系列bootloader.....…

查看全部问答>

ATmega16-ICCAVR7.14-Proteus7.5

本帖最后由 paulhyde 于 2014-9-15 03:42 编辑    …

查看全部问答>