STM32F10X 单片机 发送字符 到 串口接收

一 通信的引入

1单工

2 半双工

3全双工

 二  数据同步方式 异步方式

 1 同步 特点

2 异步的特点

三 数据通信速率

1 比特率

2 波特率

四 硬件 和 软件 部分

五 代码实现

一 通讯的引入

1 单工 :只能单向发送或者接收

2半双工:都可以接收和发送 但是某个时段是单向的

3 全双工 :随时都可以接收和发送

 二数据同步的同步异步方式

1 同步方式

数据传送石以数据块 发送给串口一次传输中字符间无间隔 

传输过程中包含的数据块较多 所以接收和发送严格同步 通常要有同步时钟 

通讯双方的时钟是连一起的。

异步方式

没有时钟的约束 使得通信双方的发送和接收不同步 不知道什么对方发送和什么接收到了

这样的同步方式 虽然 的传输速度很快 内部结构很复杂  反而异步方式  虽然速度慢 但是结构就相对简单了

三 数据通信速率

1 比特率 :每秒传输的二进制位

2 特率 :每秒传输的码元个数 

其实 比特率 和波特率 相差不大

也就是说 一个二进制位 可以表示 一个码元

0----- 0

3.3-1

四 硬件 和软件 部分

 

 

 

 五 代码实现

       
   void usart_init()

{
		GPIO_InitTypeDef  GPIO_InitStruct;
	    USART_InitTypeDef USART_InitStruct;
	    NVIC_InitTypeDef  NVIC_InitStruct;
		// 1gpio时钟 串口时钟  引脚复用 时钟
		RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,  ENABLE);
		RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, ENABLE);
		RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO,  ENABLE);
	
		//2 TX A9 输出  复用推挽输出 
		//2 RX A10 输入 浮空输入 
		 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);//
        USART_Cmd(USART1, ENABLE );//开启串口1 


}

配置我们的 流水灯的 一样 找到对应的串口函数 配置 其结构体  这样不一样的是 我们在使用串口

需要使能异步串口时钟  和引脚的时钟  最后一个是要开启串口  基本是这样框架

我们让单片机 发送一个字符  

看看我主函数是怎么写的

int main()
{
while(1)
{
     USART_SendData(USART1, 'K');
	while( USART_GetFlagStatus(USART1,  USART_FLAG_TXE)==RESET);//清除发送标志位
    USART_SendData(USART1, '\n');//换行结束 

}

}    
    
  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值