历史上的今天
今天是:2025年01月17日(星期五)
2019年01月17日 | STM32多串口共用printf打印串口数据
2019-01-17 来源:eefocus
(1)问题描述:
多串口共用printf函数,百度到的资料大部分是建议重新写一个xx_printf(format, …)。但是使用起来还是不方便,就此问题而言加上一个判断语句便可解决。
(2)解决方法:
printf函数最后调用的是int fputc(int ch, FILE *f),那么重新改写此函数便可。
(3)代码:
//标志量定义
int USART_PRINTF_FLAG = 2;//默认串口2
//改写fputc
int fputc(int ch, FILE *f)
{
if (USART_PRINTF_FLAG == 2)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,(uint8_t)ch);
}
else
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
USART_SendData(USART1,(uint8_t)ch);
}
return ch;
}
//中断处理
void USART1_IRQHandler(void)
{
USART_PRINTF_FLAG = 1;
//your coding here...
}
void USART2_IRQHandler(void)
{
USART_PRINTF_FLAG = 2;
//your coding here...
}
史海拾趣
|
WDF下在,在即插即用的设置结构WDF_PNPPOWER_EVENT_CALLBACKS中有一个属性:PNP_WDF_DEVICE_PREPARE_HARDWARE EvtDevicePrepareHardware; 这个属性指定了在设备插上机器时,操作系统要调用的函数。 我的理解: 第一步必须要先安装驱 ...… 查看全部问答> |
|
我有一个s3c2410下简单的录音程序,带有播放和录音的功能,录音功能我如何调试?怎么能让那个模拟器默认到我的耳麦接的是模拟器而不是我的电脑呢?我该怎么做呢?… 查看全部问答> |
|
http://image.cn.made-in-china.com/2f0j01GMjaCuvJrrcn/GSM/GPRS%E7%BA%AF%E6%95%B0%E6%8D%AE%E6%97%A0%E7%BA%BF%E9%80%9A%E4%BF%A1%E6%A8%A1%E5%9D%97%EF%BC%88M590%EF%BC%89.jpg 产品简介 有方M590 GPRS无线通信模块采用Infineon Tech7880 ...… 查看全部问答> |
|
/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/../../../../arm-linux/bin/ld:cannot find –lqte Collect2 :ld returned exit status 在lib 下有库libqte.so.2.3.7: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped l ...… 查看全部问答> |
|
arm中断疑惑: 当中断产生时,通过中断向量表 b ResetHandler b HandlerUndef ;handler for Undefined mode b Handler ...… 查看全部问答> |
|
我现在要用单片机测频率10HZ-1.1GHZ,分2档,分频后送入单片机计数,再1602LCD显示,现在我要用C语言写一个程序,谁帮我一下啊下面是我写的程序,大家帮我修改下啊,错误很多,大家帮我修该修改啊 本程序是用来测频率的,外部频率送入单片机,再在 ...… 查看全部问答> |
|
谁有这两个补丁 make3_80.gvk_patches make3_80.tor2_2.new_dependency_rules 需要用。 谢谢! 原文地址:http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#VxWorks/NT NOTE:The make (version 3.74) that is provide ...… 查看全部问答> |




