历史上的今天

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

正在发生

2018年09月01日 | STM32F103程序设计-9-USB转TTL串口(收发)

发布者:温文儒雅 来源: eefocus关键字:STM32F103  USB转TTL串口  收发 手机看文章 扫描二维码
随时随地手机看文章

在上一个例程USB转TTL串口(printf)的基础上进行修改。主要修改了以下几点内容:

1.由于不要使用printf了,所以把PUTCHAR_PROTOTYPE的定义部分去掉。

2.从官网例程中找到串口收发数据的代码,并融合到新定义的串口收、发数据的函数中。

例程中串口发数据的代码(已进行细微改动):

/* Send one byte from USARTy to USARTz */

USART_SendData(USART1, data);


/* Loop until USARTy DR register is empty */

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

{

   }

例程中串口收数据的代码(已进行细微改动):

/* Loop until the USARTz Receive Data Register is not empty */

while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)

{

}

 

/* Store the received byte in RxBuffer */

ReceiveData = (USART_ReceiveData(USART1) & 0x7F);

新定义的串口发数据的函数:

void USART1_Send(uint16_t data)

{

/* Send one byte from USARTy to USARTz */

USART_SendData(USART1, data);


/* Loop until USARTy DR register is empty */

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

{

}

}

新定义的串口收数据的函数:

uint8_t USART1_Receive(void)

{

uint8_t ReceiveData;


/* Loop until the USARTz Receive Data Register is not empty */

while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)

{

}

 

/* Store the received byte in RxBuffer */

ReceiveData = (USART_ReceiveData(USART1) & 0x7F);


return ReceiveData;

}

3.在主函数中先写一条接收数据的函数,接着将收到数据通过串口发回电脑。

SerialBuf = USART1_Receive();

   USART1_Send(SerialBuf);

   Delay(90000);

可以看出:1.本程序使用的是查询的方式,MCU的利用率低,今后还将学习中断的方式进行数据的接收。2.本程序收发的是一个字节的数据,今后还将学习收发一连串的数据。


关键字:STM32F103  USB转TTL串口  收发 引用地址:STM32F103程序设计-9-USB转TTL串口(收发)

上一篇:stm32使用两路串口及接收不定长数据的实现
下一篇:STM32之串口的使用

推荐阅读

突然用到了用单片机和上位机进行传递浮点数方法是这样的。1.将浮点数转化为整数,然后传递整数的ascII码形式。2.进行编码,这个暂时我是这样理解的,比方说a=7.345678这样的浮点数。可以进行编码 成一个帧数据 帧头 +数据位+ 整数编码+加小数点+小数编码具体的解码方法是:a/1取整,得到整数7,然后再添加一个小数点编码!(如0x55),然后再用a-7...
近日,印度研究人员宣布开发出一种可充电的铁离子电池,它以低碳钢为阳极,具备性价比高、可储存电量高等优势。相关研究成果近期发表在英国皇家化学会期刊《化学通讯》上。论文说,印度理工学院马德拉斯分院研究团队研发的这种铁离子电池,以低碳钢为阳极,五氧化二钒为阴极,电解液为含高氯酸铁的醚基电解液。研究显示,这种电池可进行150次循环充放电,...
9月1日上午消息,根据关注产业链的媒体DigiTimes报道,苹果第三代AirPods再次传闻将于2021年上半年推出。  DigiTimes主要关注的是苹果的供应链,而这次他们提及的是英业达(Inventec),他们认为英业达将仅占新产品装配订单的20%或更少。除了英业达之外,苹果还为其“ AirPods”准备多个组装合作伙伴,包括立讯精密(Luxshare)和歌尔声学 ...
在STM32测试串口的时候经常需要在开发板和上位机之间传输数据,我们可以用c语言中的printf()函数和getchar()函数来简化传输。以printf()为例:printf()函数实际上是一个宏,最终调用的是 fputc(int ch,FILE *f)这个函数来执行输出的,所以我们需要修改这个函数,使函数向串口输出,这样当再次引用printf()函数时,printf()就是通过串口向上位机发送数据...

史海拾趣

问答坊 | AI 解惑

新手求助,vhdl 状态机的描述

vhdl 刚入门,看了不少写状态机的例子,但都是经典的两段式,不过听说最好的状态机描述方式是三段式,上网搜了半天都是verilog的三段式状态机,不是很懂。 比如下面的例子:          ...      &n ...…

查看全部问答∨

芯片植入脑 猴子用意识控制“机械手”进食

             美国匹兹堡大学试验表明,猴子接受头发丝薄厚的微型芯片植入后,能通过思维,操纵机械手臂完成进食动作。            对那些饱受折磨的瘫痪病人而言, ...…

查看全部问答∨

LED反激式隔离电源驱动隔离各个位置的功能谁能解释下吗

LED驱动原理图各个位置的功能谁能解释下吗 反激式隔离电源的…

查看全部问答∨

arm 体系下的动态加载

小弟在一个项目下需要做自动升级,苦于该项目的开发模式是native的方式,需要把自己的代码和OS的代码一起编译成BIN文件烧入手机。所以这种模式,自动升级无法实现。现在想做一个类似DLL动态加载的方式。主要思路是把程序编译成ELF格式的文件,然后在 ...…

查看全部问答∨

请教版主---PWM输入模式中SelecttheTIM2InputTrigger

例子程序中是使用TIM2_CH2作为input port的,使用的是TI2FP2。我现在同时要使用TIM2_CH4作为input port。 那我ch4的触发输入还是用TI2FP2,我就在TIM_PWMIConfig()里面再增加了CH4通道的配置,用的是TI3,TI4,因为TI1,TI2例程 ...…

查看全部问答∨

定时器模拟串口

请教:芯片本身无串口通信功能(如F2001),P1.1用于发送和接收,每次8字节,该如何通信?…

查看全部问答∨

PIC33 bootloader 下载谁用过啊 求助

我用的官网给的方案,PDF是AN1094,提示下载成功,但是程序不跑,有做过pic33的bootloader 的 请给我个建议 谢谢了…

查看全部问答∨

SPI

int main(void){   //uint16_t *a;__IO uint16_t b ;  Delay_ARMJISHU(200);  RCC->APB2ENR|=0x102c;//A D SPI  RCC->APB2ENR|=1<<12;//开启SPI  CLOCK    GPIOA->CRL=0xBBBB4444;&nb ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved