STM32F10X(库版本)串口发送字符串到上位机

1 通讯的三种方式

2异步同步的区别

3 代码

1 通讯的三种方式 

1)单工通讯 :一端只能是接收 一端也只能发送 只能单向传输 比如 打印机

2)半双工 :两边都可以作为发送和接收 但是 是在某个时刻 比如 对讲机 一端是接收而一端只能发送 反过来也是可以的

3)全双工  :也就是和半双工的时间端相反  任意时刻都可以。

2异步同步的 区别 我们只需看它本身有没有自带时钟   如果有 就是 同步  没有 就 不是 

3 代码

时钟 我们用的是 GPIOA  并且 用了 串口一

     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1,ENABLE);

GPIOA 结构体成员配置  PA10 是接收(RX)PA9 发送 (TX)   



     GPIO_InitStruct.GPIO_Mode =GPIO_Mode_AF_PP;
	 GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9;
	 GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStruct);

     GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IN_FLOATING;
	 GPIO_InitStruct.GPIO_Pin =GPIO_Pin_10;
	 GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStruct);
	 

配置的话 我们需要看相关中文参考手册

 

 串口的结构体配置

     USART_InitStruct.USART_BaudRate =115200;
	 USART_InitStruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
	 USART_InitStruct.USART_Mode =USART_Mode_Rx|USART_Mode_Tx;
	 USART_InitStruct.USART_StopBits =USART_StopBits_1;
	 USART_InitStruct.USART_Parity =USART_Parity_No;
	 USART_InitStruct.USART_WordLength =USART_WordLength_8b;
     USART_Init(USART1,&USART_InitStruct);

引用的一个函数  重定向  

 int fputc(int ch, FILE *stream)
 { 
  USART_SendData(USART1,(uint16_t)ch);
 while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
   return ch;
 }

重定向并没那么神秘   意思就是  重新写一个函数  实则 实则 c语言的 pinrtf 就是调用这个的 

详细代码    

请加我  的 绿马  带上你的备注             哞哞一样 

   

 

   

版权声明:本文为CSDN博主「*(*(arr+i)+j)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_59349642/article/details/122642545

1 通讯的三种方式

2异步同步的区别

3 代码

1 通讯的三种方式 

1)单工通讯 :一端只能是接收 一端也只能发送 只能单向传输 比如 打印机

2)半双工 :两边都可以作为发送和接收 但是 是在某个时刻 比如 对讲机 一端是接收而一端只能发送 反过来也是可以的

3)全双工  :也就是和半双工的时间端相反  任意时刻都可以。

2异步同步的 区别 我们只需看它本身有没有自带时钟   如果有 就是 同步  没有 就 不是 

3 代码

时钟 我们用的是 GPIOA  并且 用了 串口一

     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1,ENABLE);

GPIOA 结构体成员配置  PA10 是接收(RX)PA9 发送 (TX)   



     GPIO_InitStruct.GPIO_Mode =GPIO_Mode_AF_PP;
	 GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9;
	 GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStruct);

     GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IN_FLOATING;
	 GPIO_InitStruct.GPIO_Pin =GPIO_Pin_10;
	 GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStruct);
	 

配置的话 我们需要看相关中文参考手册

 

 串口的结构体配置

     USART_InitStruct.USART_BaudRate =115200;
	 USART_InitStruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
	 USART_InitStruct.USART_Mode =USART_Mode_Rx|USART_Mode_Tx;
	 USART_InitStruct.USART_StopBits =USART_StopBits_1;
	 USART_InitStruct.USART_Parity =USART_Parity_No;
	 USART_InitStruct.USART_WordLength =USART_WordLength_8b;
     USART_Init(USART1,&USART_InitStruct);

引用的一个函数  重定向  

 int fputc(int ch, FILE *stream)
 { 
  USART_SendData(USART1,(uint16_t)ch);
 while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
   return ch;
 }

重定向并没那么神秘   意思就是  重新写一个函数  实则 实则 c语言的 pinrtf 就是调用这个的 

详细代码    

请加我  的 绿马  带上你的备注             哞哞一样 

   

 

   

版权声明:本文为CSDN博主「*(*(arr+i)+j)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_59349642/article/details/122642545

生成海报
点赞 0

*(*(arr+i)+j)

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

STM32F103(七)——通用定时器的说明与功能

前言 本节我们会对STM32的通用定时器功能进行说明和介绍,也是对 STM32(六) 与STM32(七)进行一个总结说明 ——————————————————————————————————————

关于STM32F10x串口UART相关代码笔记

目录 一、更新时间 二、相关器件 三、硬件连接 四、现象与事件 五、具体操作: 5.1 常用的串口相关寄存器以及波特率计算 5.1 串口配置步骤 一、更新时间 2022.1.23 二、相关器件 stm32f103c8t

06_基于树莓派wiringPi的温湿度采集实验

目的: 通过温湿度的代码编写,熟悉树莓派中的单总线操作流程。 目录 1、基础知识 1.1、DHT11数字温湿度传感器简介 1.2、DHT11单总线通信协议定义 2、功能实现 2.1、原理图 2.2、代码实