历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2021年09月16日 | STM32的printf使用

2021-09-16 来源:eefocus

#include


//加入以下代码,支持printf函数,而不需要选择use MicroLIB   

#if 1

#pragma import(__use_no_semihosting)             

//标准库需要的支持函数                 

struct __FILE 

int handle; 


}; 


FILE __stdout;       

//定义_sys_exit()以避免使用半主机模式    

void _sys_exit(int x) 

x = x; 

}  

//重定义fputc函数 

int fputc(int ch, FILE *f)

{      

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

USART1->DR = (u8) ch;      

return ch;

}

#endif 


void uart_init(u32 bound)

{

//GPIO端口设置

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟


//USART1_TX   GPIOA.9

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9


//USART1_RX   GPIOA.10初始化

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入

GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

//USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;//串口波特率

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式

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; //收发模式


USART_Init(USART1, &USART_InitStructure); //初始化串口1

USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);//开启串口接受中断

USART_Cmd(USART1, ENABLE);                    //使能串口1 

}


同样调用的时候对应的源文件也需要包含stdio.h

推荐阅读

史海拾趣

DART(英国达特)公司的发展小趣事

随着公司规模的不断扩大和业务的不断拓展,DART公司开始将目光投向全球市场。他们先后在亚洲、北美和欧洲等地设立了分公司或办事处,以便更好地服务当地客户并拓展新的市场机会。同时,公司也加大了对国际市场的投入和宣传力度,通过参加国际展会、举办技术研讨会等方式提升品牌知名度和影响力。这些努力使得DART公司逐渐成为一个具有全球影响力的电子品牌。

请注意,以上故事均为虚构,旨在展示一个电子行业公司可能的发展路径和面临的挑战。实际情况可能因公司背景、市场环境等因素而有所不同。

ENERGIZER公司的发展小趣事

近年来,随着智能设备的普及,消费者对电池的需求也日益增长。为了满足这一需求,ENERGIZER不断加大研发投入,推出了一系列高性能的电池产品。其中,高能量锂电池的研发成功,为智能设备的发展提供了强有力的支持。这款电池具有高能量密度、长寿命等优点,广泛应用于智能手机、平板电脑等高端电子设备中。同时,ENERGIZER还不断优化生产工艺,降低成本,为消费者提供更优质、更实惠的电池产品。

这些故事展示了ENERGIZER公司在电子行业发展中的创新力和市场洞察力,也体现了该公司对环保和消费者需求的关注与响应。作为全球领先的电池制造商,ENERGIZER始终保持着技术创新的步伐,为全球电子行业的发展做出了重要贡献。

德力西(DELIXI)公司的发展小趣事

进入90年代,德力西进入快速发展阶段。1992年,公司引进外资,成立了“中外合资温州德力西电器有限公司”。随后,通过兼并联合和行业整合,德力西不断扩大生产规模和市场影响力。1994年,经有关部门批准,组建了浙江德力西集团公司,成为浙江省首个省级股份合作制电器企业集团。

EOS POWER INDIA Pvt公司的发展小趣事

在追求经济效益的同时,EOS也注重可持续发展和环保责任。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。EOS还投入资金建设了环保设施,确保生产过程中的废弃物得到有效处理。此外,公司还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了EOS的社会责任感,也为公司的长期发展奠定了坚实的基础。

Belkin公司的发展小趣事

贝尔金在创新方面的努力得到了行业的广泛认可。例如,在2015年,贝尔金获得了CES创新大奖,这充分证明了其在电子产品设计和技术创新方面的实力。此外,贝尔金还多次获得其他行业奖项和荣誉,这些成绩不仅提升了贝尔金的品牌形象,也为其未来的发展奠定了坚实的基础。

以上五个故事从不同的角度展示了Belkin公司在电子行业中的发展历程和成就。从创立初期的艰辛到逐步成长壮大,再到全球化布局和创新发展,贝尔金凭借坚定的信念和不懈的努力,成为了电子行业的佼佼者。

GPD Optoelectronics Corp公司的发展小趣事

贝尔金公司的业务始于1983年的美国加州霍桑。当时,它仅仅是一个在车库里运营的小企业,销售额仅为十八万美元。然而,这个看似不起眼的起点却孕育了一个未来的行业巨头。从最初的产品设计和生产,到逐步进入市场并获得消费者的认可,贝尔金凭借对电子产品连接技术的深入理解和创新,逐步在行业中崭露头角。

问答坊 | AI 解惑

关于LTC1745模数转换器

今天有网友要到关于LTC1745模数转换器的资料,我查了一下,虽然没有找到中文的,但这篇英文资料对LTC1745的介绍还是比较全的,在这里分享出来,希望对其他的网友也能有加大的帮助。 LTC1745 - Low Noise,12-Bit, 25Msps ADC 特点Sample Rate: ...…

查看全部问答>

WINCE BOOTLOADER 开发编译

各位高手,本人正在学习windows CE bootloader开发,目前参考张东泉的《Windows CE实用开发技术》及Windows CE help文件按照以下步骤进行实验: set _WINCEROOT=C:\\wince500 cd C:\\wince500\\public\\common\\oak\\misc Wince ARMV4I CEBASE ...…

查看全部问答>

pxa270电源管理i2c接口问题

按照PXA270的DATASHEET,我开启了电源管理单元时钟,设置协处理器器cp14的C7,即PWRMODE[VC]=1,通过专门的I2C接口,向电源芯片发送电压改变的命令,为何测不到输出的SCL信号?但是,读PVCR,值一直为0x4014,即[VCSA]=1,说明正在与电源芯片通信, ...…

查看全部问答>

怎么解决组容降压的滤波问题

小弟自己做了一个组容降压的的电源来驱动板子,虽然能正常工作,但经常会发生电压的突变,从而烧坏芯片,哪位前辈能指导一二?感激不尽。。。   …

查看全部问答>

手工调高软件优先级后,同级别优先级的中断还能产生?

我主程序中的一段代码运行时修改软件优先级由Level 0(I1=1,I0=0)到Level 1(I1=0,I0=1),把外部端口PB1的优先级设置为Level 1(I1=0,I0=1),希望这样可以在执行该段代码时不被外部中断PB1打断。可调试中发现PB1中断还是能够打断该段代 ...…

查看全部问答>

DHCP AUTOIP 静态IP

在使用DHCP获取失败后,系统会用AUTOIP来配置IP。我想让他DHCP失败后就用STATIC 静态IP。曾试过配置lwipopts.h来关闭AUTOIP,好像它也不会用静态IP。 问题1:我想在DHCP失败后就用STATIC 静态IP,该怎么做? 问题2:AUTOIP不是很明白,能帮我解释 ...…

查看全部问答>

关于LM3S811例程中watchdog 的startup_rvmdk.S文件

第一次打开LM3S811例程中watchdog,运行后,一个LED灯闪烁。 想自己建立一个工程,但是把watchdog.c移植到新建的工程后一直看不到效果。 刚开始以为设置的不对,就拿例程和自己的工程一个一个进行比较,发现不是设置的问题。 最后发现是startup_ ...…

查看全部问答>

IAR下DEBUG问题

为什么我进入debug以后调试到一句话以后,就不能再调试了,按钮全变灰了…

查看全部问答>

做监控工程,电源选择决定你的命运

1、监控摄像机标明DC12V/AC24V通用,该选择什么样的电源? 答:选择AC24V监控电源,因为同样的传输距离,电压越高,损耗越小。电压高了,负载就能得到比较充足的电压。同时,由于采用交流24V,在调试摄像机的时候,可以选择电源同步,使整个监控 ...…

查看全部问答>

求救了

EP2C8Q208C8N 和EP2C5Q208C8N 兼容吗…

查看全部问答>