历史上的今天
返回首页

历史上的今天

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

2019年01月29日 | STM32F103串口配置,并且使用printf进行打印

2019-01-29 来源:eefocus

首先要配置串口时钟:


    // USART1 clock enable 

    RCC_APB2PeriphClockCmd(

    RCC_APB2Periph_USART1 |

    RCC_APB2Periph_GPIOA |

    RCC_APB2Periph_AFIO, ENABLE);

然后再配置端口,在配置串口,再使能即可。


 


void USART1_Init(void)

{

/////// config the gpio

    GPIO_InitTypeDef GPIO_InitStructure;

    

    /* PA9 USART1_Tx */ 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //配置发送端口

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  // 

    GPIO_Init(GPIOA, &GPIO_InitStructure); 

    /* PA10 USART1_Rx  */ 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //配置接收端口

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;// 

    GPIO_Init(GPIOA, &GPIO_InitStructure);

    

//////////////

    

    USART_InitTypeDef USART_InitStructure;//

 

    USART_InitStructure.USART_BaudRate = 115200;//配置波特率

    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//

    USART_InitStructure.USART_StopBits = USART_StopBits_1;// 

    USART_InitStructure.USART_Parity = USART_Parity_No;//

    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//

    

    //config clock

    USART_ClockInitTypeDef   USART_ClockInitStructure;

    

    USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;     

    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;      

 

    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;      

    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; 

    

    USART_ClockInit(USART1, &USART_ClockInitStructure);

 

    /* Configure USART1 */ 

    USART_Init(USART1, &USART_InitStructure);//

    

    /* Enable the USART1 */ 

    USART_Cmd(USART1, ENABLE);//??1? 

    

}

串口配置完毕,为了使得能够使用 printf 进行打印,需要进行重定向:


在 stm32f10x_usart.c 中添加如下代码:


int fputc(int ch, FILE *f)

{

 /* 给USART写一个字符 */

 USART_SendData(USART1, (uint8_t) ch);

 

 /* 循环直到发送完成 */

 while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

 

 return ch;

}

在 stm32f10x_usart.h 中添加stdio.h头文件,然后,添加声明 int fputc(int ch, FILE *f);


最后,在设置里面 Target 下面 勾选“Use MicroLIB” 就可以了。


推荐阅读

史海拾趣

Grayhill公司的发展小趣事
如汽车音响、车载充电器等需要稳定电压和电流的电子设备。
Coil-Q Corporation公司的发展小趣事

随着全球市场的开放和融合,Coil-Q意识到国际化是公司发展的必然趋势。于是,公司开始积极布局海外市场,先后在多个国家和地区设立了分公司或办事处。通过深入了解当地市场需求和文化习惯,Coil-Q成功打开了多个新的市场,实现了业务的快速增长。

成都振芯/国腾(CORPRO)公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,CORPRO始终保持着对创新的追求和投入。近年来,公司不仅加强了在集成电路设计、微波组件开发等领域的研发能力,还积极拓展物联网、大数据等新兴领域的应用场景。这些努力使得CORPRO在行业内获得了广泛认可,并多次荣获各类荣誉奖项。例如,在2022年5月20日,CORPRO入选了四川省拟推荐2022年度国家技术创新示范企业公示名单,这一荣誉再次证明了CORPRO在电子行业的实力和影响力。

总之,成都振芯/国腾(CORPRO)公司的发展历程充满了挑战与机遇。通过不断的努力和创新,CORPRO已经成长为电子行业中一家具有强大实力和广泛影响力的企业。未来,CORPRO将继续致力于技术创新和市场拓展,为电子行业的发展贡献更多力量。

Daniels Manufacturing公司的发展小趣事

自1946年成立以来,Daniels Manufacturing Corporation一直致力于为军事和电信行业提供高质量的工具系统和技术。在20世纪70年代,DMC经历了一次重大的技术突破,成功研发出一种新型的手动压接工具,该工具能够精确、高效地处理各种电子连接器。这一技术的突破为DMC赢得了市场的认可,也为其后续的产品线扩展奠定了基础。在接下来的几十年里,DMC不断投入研发,推出了包括电动、气动、液压压接工具在内的多种产品,广泛应用于通信、光纤、激光等领域。

ETC1公司的发展小趣事

成谷科技是一家专注于ETC技术在区域市场应用的企业。公司根据不同地区的交通特点和需求,量身定制ETC解决方案,并在当地市场进行深耕细作。通过深入了解当地市场和客户需求,成谷科技成功打造了一系列具有地方特色的ETC应用案例,赢得了当地政府和客户的广泛赞誉。

Cableform Inc公司的发展小趣事

Cableform Inc公司起源于一位名叫约翰·卡贝尔的电气工程师的创意。在20世纪中期,约翰看到了电子工业的巨大潜力,特别是在电磁控制领域。于是,在1945年,他创立了Cableform Inc,专注于研发和生产电磁控制设备。起初,公司只有几名员工,面临着资金短缺和技术挑战。然而,约翰凭借着对技术的执着和对市场的敏锐洞察,成功设计出了一款具有竞争力的磁铁控制器,为公司的发展奠定了基石。

问答坊 | AI 解惑

UART的设计

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

查看全部问答>

大家有玩过camera模块的没有

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

查看全部问答>

用过MC9328MXL的请进

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

查看全部问答>

新手请教关于嵌入式开发的方向问题

请问大家,做“智能卡”(比如食堂饭卡、公交车卡)、读卡器的开发工作,对于嵌入式开发、手机软件开发和Wince应用开发的工作在经验和技能上有没有多大帮助呢?…

查看全部问答>

STM32F103RBT6+KEIL3.4+JLINK怎样设置keil下载程序到flash呢?

STM32F103RBT6+KEIL3.4+JLINK 怎样设置keil下载程序到flash呢? 在网上查了好多相关文档,都试了,下载的时候也没报错,但是结果很奇怪。 之前下了个让PB2输出高电平点亮LED灯的程序,下载后LED确实亮了,后来想让LED闪烁,但是无论如何,LE ...…

查看全部问答>

城主,问一下STM32F105RB的OTG问题!

我现在想用STM32F105RB做产品,在现场通过U盘对产品进行升级!请问可以做到吗?因为USB的OTG我从来没有用过。以前用的要么只能host,或者只能作device。 另外当用STM32F105RB的OTG作主访问U盘时,外围还要加其它的接口芯片吗?另外就是STM32F ...…

查看全部问答>

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

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

查看全部问答>

有关菜鸟的学习路程,求指教·

开始时觉得自学单片机,再上升到嵌入式的高度,慢慢来,总会成的。但是越来越感觉自学的不可行性,网上的视频只是一个一个模块的教你使用了零碎的外围,我觉得除了这些零碎以外我没有收获到什么东西。希望高手能给我的自学道路指点一下方向,就是说 ...…

查看全部问答>

紧急求助!

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

查看全部问答>