历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2019年04月23日 | STM32学习笔记-配置串口,printf重定向

2019-04-23 来源:eefocus

串口的配置(以stm32f103c8t6串口1为例)


    USART_InitTypeDef chuanko;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    chuanko.USART_BaudRate=9600;

    chuanko.USART_WordLength=USART_WordLength_8b;

    chuanko.USART_StopBits=USART_StopBits_1;

    chuanko.USART_Parity=USART_Parity_No;

    chuanko.USART_HardwareFlowControl=USART_HardwareFlowControl_None;

    chuanko.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;

    USART_Init(USART1,&chuanko);

    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

    USART_Cmd(USART1,ENABLE);

    USART_ClearFlag(USART1,USART_FLAG_TC);

USART_InitTypeDef串口结构体变量类型


RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);打开apb2总线上的串口时钟


RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);打开apb2总线上的复用时钟


chuanko.USART_BaudRate=9600;串口波特率


波特率:模拟线路信号的速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。


chuanko.USART_WordLength=USART_WordLength_8b;数据位数


chuanko.USART_StopBits=USART_StopBits_1;停止位数


chuanko.USART_Parity=USART_Parity_No;有无奇偶校验


chuanko.USART_HardwareFlowControl=USART_HardwareFlowControl_None;硬件流控制


chuanko.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;串口模式 发送 接收


USART_Init(USART1,&chuanko);传入结构体变量地址,配置串口


USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);打开串口中断


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


USART_ClearFlag(USART1,USART_FLAG_TC);清空标志位


io初始化


  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 ;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 


  GPIO_Init(GPIOA, &GPIO_InitStructure);


void USART1_IRQHandler(void)

{

    if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)

    {

 

        ......;

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

    }

 

}

编写中断服务函数,每收到1字节数据进入一次中断服务函数


USART_ReceiveData(USART1);返回收到的数据


USART_SendData(USART1,数据);发送数据


printf重定向


printf是c语言标准输入输出库中的函数,只需修改它的输出到串口即可


包含stdio.h重载下面这个函数完成重定义


int fputc(int ch,FILE *f)

{

 

    USART_SendData(USART1,(u8)ch);

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

    return ch;

}



推荐阅读

史海拾趣

CT Micro公司的发展小趣事
  1. 创业初期与技术创新

CT Micro公司最初由几位电子工程领域的专家创立,他们看到了微型计算机断层扫描(Micro-CT)技术在电子行业中的巨大潜力。初期,公司面临着资金短缺和技术难题,但他们通过不断研发和创新,成功开发出了一款具有高性价比的Micro-CT设备,迅速获得了市场的认可。

  1. 市场拓展与合作伙伴关系

随着产品的成熟,CT Micro开始积极寻求市场拓展。他们与多家电子制造企业建立了合作关系,为这些企业提供Micro-CT设备的定制服务。通过与这些企业的合作,CT Micro不仅扩大了市场份额,还进一步提升了产品的技术水平和应用范围。

  1. 研发升级与产品迭代

面对日益激烈的市场竞争,CT Micro不断投入研发力量,对Micro-CT设备进行升级和迭代。他们成功推出了多款新型设备,具有更高的分辨率、更快的扫描速度和更低的辐射剂量。这些新产品的推出,进一步巩固了CT Micro在电子行业中的领先地位。

  1. 国际化战略与市场拓展

随着国内市场的饱和,CT Micro开始实施国际化战略。他们积极参与国际展览和研讨会,展示自己的产品和技术实力。同时,他们还在海外设立了销售和服务中心,为国际客户提供更加便捷的服务。通过这些努力,CT Micro成功打开了国际市场的大门。

  1. 社会责任与可持续发展

在快速发展的同时,CT Micro也积极履行社会责任。他们注重环保和可持续发展,采用环保材料和节能技术生产产品。此外,他们还积极参与公益事业,为贫困地区的教育和医疗事业贡献力量。这些举措不仅提升了公司的社会形象,也为其可持续发展奠定了坚实基础。

请注意,这些故事框架是虚构的,并不代表CT Micro公司的实际发展情况。如果您需要了解CT Micro公司或类似公司的真实故事,建议您查阅相关公司的官方网站、新闻报道或行业分析报告。

City_Technology公司的发展小趣事

1977年,伦敦大学内,四个富有远见的科学家怀揣着梦想,创立了City Technology公司。他们利用Wolfson研究所开发的电化学技术,着手研发新型氧气感应技术。这一创新技术的诞生,标志着City Technology在气体传感领域的初步尝试,并为其日后的腾飞奠定了坚实的基础。在接下来的几年里,公司不断突破技术瓶颈,其铁罐氧气传感器技术于1982年获得了英国皇后奖技术成就奖,这一荣誉不仅肯定了公司的技术实力,也为其在市场上赢得了良好的声誉。

Hendon Semiconductors公司的发展小趣事

随着全球化进程的加速和国际贸易的不断发展,Hendon Semiconductors积极实施全球化战略,不断拓展国际市场。公司加强与国际客户的合作与交流,了解他们的需求和期望,并根据市场变化调整产品结构和市场策略。同时,Hendon Semiconductors还积极参与国际展会和技术交流活动,展示其最新的技术和产品成果,提升品牌知名度和影响力。通过一系列有效的市场拓展措施和全球化战略的实施,Hendon Semiconductors在国际市场上取得了显著的成绩和突破。

Burr-Brown公司的发展小趣事

进入20世纪70年代中期,Burr-Brown敏锐地意识到数字技术将对音频行业产生深远影响。公司迅速抓住CD播放机市场的机遇,通过技术创新,成功引领音频行业进入数字时代。这一转型不仅巩固了Burr-Brown在音频领域的领先地位,也为公司带来了更广阔的发展空间。

COTO TECHNOLOGY公司的发展小趣事

进入上世纪六十年代,COTO TECHNOLOGY迎来了一个重大的转折点。公司开始探索线圈绕组以外的领域,通过引入簧片继电器,成功扩展了产品线。这一创新举措不仅丰富了公司的产品种类,更重要的是,它为公司打开了新的市场领域。到了七十年代,COTO更是凭借开发出的首款获得专利的低热电动势簧片继电器,一跃成为业界领先的干簧继电器制造商。

Digilent公司的发展小趣事

作为电子行业的领军企业之一,DIALIGHT始终将技术创新作为公司发展的核心驱动力。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有创新性和竞争力的LED产品。同时,DIALIGHT还积极与高校、科研机构等合作,共同推动LED照明技术的进步和应用。

问答坊 | AI 解惑

电磁兼容的设计方法介绍(一)

一﹑前言     关于电磁兼容的要求﹐目前世界上大多的先进国家﹐都已经有管制的法规并有相关的符合要求的单位﹐若产品无法符合要求规定﹐往往无法销售到该地区的市场﹐因此多数的电子产品﹐在销售前都必须经过电磁兼容的测试﹐ ...…

查看全部问答>

整体成本与复杂度

在电子产品从开发、运行到售后服务和维护这个完整的生命周期之中,设备软件已经成为电子产品制造商获得产品差别化竞争优势的关键因素,降低设备软件的成本与复杂度是其中最大的挑战。为了应对这个挑战,电子设备制造商需要进行一场现代化的变革,改 ...…

查看全部问答>

谁能帮忙给个小区单元楼防火报警系统的大致结构图

谁能帮忙给设计个小区单元楼防火报警系统的大致结构图,不需要具体的电路,给个架构图参考下就行了,谢了…

查看全部问答>

看到坛子里有人关注PSOC,所以贡献些资料

PSoC片上系统与单片机、ARM的区别 到目前为止,有三种技术对电子工程师设计电子产品的模式产生了重大而又深远的影响,它们是:可编程微控制器(MCU),可编程逻辑阵列和可编程模拟阵列。与采用多个分立元件及单一功能的模拟与数字集成电路组成的 ...…

查看全部问答>

关于芯片的CE管脚的问题

     我现在在操作flash芯片,以我的想法,应该每次和flash芯片交互的时候然后将CE拉低有效,完成后拉高,下次用的时候重复这样做.但是,我想知道在对flash芯片初始化的时候就直接对其ce管脚拉低,然后整个程序跑的过程中一直是地电 ...…

查看全部问答>

散分:java嵌入式开发,该学些什么课程?

如题! 想请朋友更详细的告之,对于一个完全的新手,学习java的嵌入式开发,需要学好哪些课程?需要了解哪些? 之前搜索过,但都没有给出详解,还希望eeworld里朋友们,多给点建议。…

查看全部问答>

TCPMP Id3(专辑,流派等)乱码

如题: tchar_t id3[128]; int i = get_current_music(); g_pp->CommentByName(g_pp,i,PlayerComment(COMMENT_TITLE),id3,TSIZEOF(id3)); g_pp->CommentByName(g_pp,i,PlayerComment(COMMENT_ARTIST),id3,TSIZEOF(id3)); 复制代码…

查看全部问答>

无线网卡的图标无法去掉

基于USB的无线网卡,插上无线网卡是桌面的右下角会出现无线网卡的图标,这是正常的. 由于我的USB无线网卡支持selective suspend,也就是说,如果无线网卡在一定的时间 内(10s)如果没有和AP或者其他网卡连接上,则无线网卡进入睡眠的状态.睡眠的状态和 ...…

查看全部问答>

这个东西怎么做?

有一组开关,在理想的情况下按下开关,各自开关应该同时接通。但是由于有延时,按下开关之后各个子开关会有时间延迟,如何确定那最先接通的开关和最后接通的开关接通的时间延迟。有人提出来了一种方案(这个人走了),我没看明白,只看到里面提到了 ...…

查看全部问答>