在STM32测试串口的时候经常需要在开发板和上位机之间传输数据,我们可以用c语言中的printf()函数和getchar()函数来简化传输。
以printf()为例:
printf()函数实际上是一个宏,最终调用的是 fputc(int ch,FILE *f)这个函数来执行输出的,所以我们需要修改这个函数,使函数向串口输出,这样当再次引用printf()函数时,printf()就是通过串口向上位机发送数据的一个函数了。
那么如何修改printf()呢?加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。所以我们可以在别的地方定义一个相同名字的函数,而不必也尽量不要修改之前的函数。
修改fputc函数如示:
/* 重定向printf函数 */
int fputc(int ch, FILE *f)
{
USART_SendData( DEBUG_USARTx, (uint8_t) ch);
/* 等待发送完毕 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
return ch;
}
修改完成后需要勾选Target设置中的Use Micro LIB选项,MicroLib提供了一个有限的stdio子系统,所以还要再头文件中包含#include getchar()函数也是如此: /* 重定向scanf函数 */ int getc(FILE *f) { /* 等待串口输入数据 */ /* 有了这个等待就不需要在中断中进行了 */ while(USART_GetFlagStatus(DEBUG_USARTx , USART_FLAG_RXNE)==RESET); /* 返回值进行强制类型转换 */ return (int)USART_ReceiveData(DEBUG_USARTx); }
上一篇:STM32—位带操作
下一篇:STM32—中断详解(配合按键中断代码,代码亲测)
推荐阅读
史海拾趣
ESTEK公司深知产品质量对于企业发展的重要性。因此,公司从源头上把控原材料的质量,并在生产过程中严格执行质量管理体系标准。通过一系列严格的质量管控措施,ESTEK公司的产品质量得到了有效保障。在市场上,ESTEK公司的产品以高质量、高可靠性著称,赢得了广大客户的信赖和好评。
在不断追求技术创新的道路上,Auris公司并未止步。近年来,该公司正在积极研发柔性机器人技术,这种技术有望在治疗喉咙、肺和肠胃疾病方面发挥重要作用。柔性机器人的研发不仅展示了Auris在技术创新方面的持续努力,也为其在未来的医疗市场中抢占先机提供了有力支持。
这五个故事展示了Auris公司在电子行业中的发展历程,从创始人的科技愿景到技术突破获得认可,再到与强生的合作以及柔性机器人的研发,每一步都体现了Auris对于技术创新和市场拓展的不懈追求。这些事实性的故事不仅展现了Auris公司的成长轨迹,也反映了电子行业中技术创新和市场竞争的激烈态势。
在电子行业的发展过程中,Aimtec公司积极寻求与行业领军企业的合作机会。通过与这些企业的合作,Aimtec不仅获得了更多的市场资源和技术支持,还提升了自身的技术水平和创新能力。同时,这些合作也为Aimtec带来了更多的商业机会和发展空间,实现了双方的共赢发展。
在20世纪90年代初,Herga公司凭借其在精密电机技术上的突破,成功研发出一款高效能、低噪音的步进电机,迅速在自动化设备和电子设备市场中脱颖而出。这款电机不仅提高了生产效率,还显著降低了能耗和噪音水平,赢得了众多知名电子制造商的青睐。Herga公司借此机会,进一步拓展产品线,逐步确立了在电子行业精密传动组件领域的领先地位。
随着全球对环境保护的日益重视,Herga公司积极响应绿色制造的号召,将环保理念融入产品设计和生产过程中。公司研发出了一系列节能高效的电子产品组件,如低能耗的驱动器、可回收材料的电机外壳等。这些产品不仅满足了市场对高性能、高品质的需求,还降低了生产过程中的碳排放和资源消耗。Herga公司的这一举措赢得了社会各界的广泛赞誉,也为其在电子行业中的可持续发展奠定了坚实基础。
随着技术的成熟和市场的扩大,Centellax开始积极拓展国内外市场。公司通过与全球知名的通信设备制造商、电信运营商等建立合作关系,成功将产品打入国际市场。此外,Centellax还积极参与行业展会、研讨会等活动,提升品牌知名度和影响力。
在战略合作方面,Centellax注重与产业链上下游企业的协同发展。通过与供应商、客户等建立紧密的合作关系,实现资源共享和优势互补。这些合作不仅有助于提升公司的运营效率和市场竞争力,还为公司的长期发展提供了有力保障。
“首届中国研发管理高峰会” 欢迎您拨冗出席!11月22-24日,北京 “首届中国研发管理高峰会”邀请函 2007年11月22-24日 北京 产品开发是21世纪的工业战场,正如制造业曾是20世纪70年代和80年代的工业战场一样。在市场需求不断变化、技术迅速更新的趋势之下,企业是否具备快速、高质量、低成本推出产品的能力, ...… 查看全部问答∨ |
|
USB转串口的,在ce5下面能正常使用,但换了ce6就不行,无论是导入注册表还是安装inf都不行,驱动死活装不上。。。驱动包里面的说明是支持ce6的,网上搜了一下似乎也有人用成功过。。。 谁用过这个驱动,指点一下吧,先谢了!… 查看全部问答∨ |
|
我写了CAN的驱动CAN.DLL,并且配置了project.reg文件, [HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\CAN] "Dll"="CAN.dll" "Prefix"="CAN"   ...… 查看全部问答∨ |
2006年10月6日,我们在ST的英文网站上举行了一个有关STR91x系列芯片的网上研讨会,在这个研讨会中世界各地的工程师提出了很多问题,我们把大家最关心的一些问题集中起来,汇编成一个《STR910常见问题解答》,现将全文翻译转载如下,供国内同行 ...… 查看全部问答∨ |