当前位置: 首页 > wzjs >正文

金华做网站财政局网站建设自查报告

金华做网站,财政局网站建设自查报告,马克飞象 wordpress,网站开发客户提供素材文章目录 通信的基本概念串行通信和并行通信单工,半双工和全双工串口的硬件连接 stm32的串口原理图CPU的芯片手册stm32串口的库函数实现通过串口实现printf函数使用中断实现串口的接收 通信的基本概念 串行通信和并行通信 串行通信一个方向只有一个数据通道&#x…

文章目录

      • 通信的基本概念
        • 串行通信和并行通信
        • 单工,半双工和全双工
          • 串口的硬件连接
      • stm32的串口
        • 原理图
        • CPU的芯片手册
        • stm32串口的库函数实现
        • 通过串口实现printf函数
        • 使用中断实现串口的接收

通信的基本概念

串行通信和并行通信

在这里插入图片描述
串行通信一个方向只有一个数据通道,一次传输一位数据,适用于传输距离较长,速度要求不是很高场合。

并行通信一个方向有多个数据通道,一次传输多位数据,适用于传输距离较短,速度要求很高的场合。

单工,半双工和全双工

在这里插入图片描述
单工:数据只能沿着一个方向传输

半双工:数据可以双向传输,但是不能影响同时进行

全双工:数据可以同时双向传输

通信速率:单位时间内传输的比特数,叫做波特率(bps)

通信协议(串口)

通信协议就是通信方事先约定好的数据格式
在这里插入图片描述

串口的硬件连接

在这里插入图片描述
UART—————通用异步收发器

USART————–通用同步/异步收发器

stm32的串口

原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
USB调试串口最终连接到了CPU的PA9,PA10,这两个引脚有串口的复用功能。

CPU的芯片手册

在这里插入图片描述

stm32串口的库函数实现

在项目中添加库函数源码
在这里插入图片描述

  • 开启GPIO和USART1时钟
  • 将PA9、PA10配置成串口复用
GPPIO_PinAFConfig(...);
  • 初始化串口
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
参数:
USARTx - 哪个串口USART_InitStruct - 串口初始化结构
typedef struct{uint32_t USART_BaudRate;     //波特率     uint16_t USART_WordLength;   //数据位长度    uint16_t USART_StopBits;     //停止位长度  uint16_t USART_Parity;      //校验方式uint16_t USART_Mode;         //发送/接收模式  uint16_t USART_HardwareFlowControl;  //硬件流控制} USART_InitTypeDef;
  • 使能串口
USART_Cmd(....);
  • 串口数据的发送和接收

发送(轮询)

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
//传入哪个串口发什么数据
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)
参数:USARTx - 哪个串口USART_FLAG - 哪个标志 发送完成标志 - USART_FLAG_TXE
返回SET表示有该标志    
通过串口实现printf函数

stm32的项目中可以直接使用C标准库函数,其中printf函数没有完全实现。预留了一个后门fputc,可以通过fputc往串口打印来实现printf函数。

fputc函数格式:

int fputc(int ch,FILE* f)
{while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!= SET);USART_SendData(USART1,ch);return ch;
}

注意:

  • stm32芯片上运行程序,如果主机运行了调试器,程序就会使用主机的输入输出设备,这种模式叫半主机模式,printf如果通过串口打印,必须关闭半主机模式

  • #pragma import(__use_no_semihosting)

    
    //重定义
    int fputc(int ch,FILE* f)
    {while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!= SET);USART_SendData(USART1,ch);return ch;
    }
    
使用中断实现串口的接收

由于串口合适发数据由自己决定,不存在无效等待的问题,无需使用中断,但是串口何时接收数据不由自己决定,如果还使用轮询会存在大量无效等待,此时要是使用中断提高效率。

串口中断和定时器中断类似,需要配置中断源开关和NVIC

NVIC_Init(...);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

文章转载自:

http://uqGlJCSb.pypqf.cn
http://jts8J4jo.pypqf.cn
http://KpnZAur8.pypqf.cn
http://HmVebKaz.pypqf.cn
http://PJF3hZEy.pypqf.cn
http://vQ5S84W9.pypqf.cn
http://fxtfyzws.pypqf.cn
http://bb2KTPhU.pypqf.cn
http://NTlx1eT6.pypqf.cn
http://jvGtKV3Q.pypqf.cn
http://2cdVrbp7.pypqf.cn
http://uqKVZ4y1.pypqf.cn
http://mqk9LAPI.pypqf.cn
http://gk8g3Pn7.pypqf.cn
http://MQcyf27u.pypqf.cn
http://jY5LlNhX.pypqf.cn
http://8EBYV6oo.pypqf.cn
http://ZUyeS959.pypqf.cn
http://xWROjyPm.pypqf.cn
http://9TKtDuk9.pypqf.cn
http://jfEnGZdk.pypqf.cn
http://rF2MN5fC.pypqf.cn
http://HUxmluij.pypqf.cn
http://KmiF46An.pypqf.cn
http://uy3GvPb7.pypqf.cn
http://sdXgZVBL.pypqf.cn
http://HhHKodz5.pypqf.cn
http://8mG1i5rZ.pypqf.cn
http://Fchuf2jO.pypqf.cn
http://yOlRmWVL.pypqf.cn
http://www.dtcms.com/wzjs/610951.html

相关文章:

  • 沈阳市建设局网站首页南山建网站公司
  • 建筑参考网站知名的建站公司
  • 网站建设期末题答案临翔网站建设
  • 制作一个网站并上传访问男科医院排名最好的医院
  • 花型图案设计网站优秀网站推荐
  • 辽宁省住房城乡建设厅网站做网站的基本要求
  • 网站备案密码格式深圳建设交易信息网站
  • asp网站建设源码网站开发四个重点
  • 电子商务网站开发基础网站建设行业发展趋势
  • 用dw做简单图片网站百度网址大全下载
  • 好用的海报设计网站淮安网站网站建设
  • 专业沈阳网站制作上海做网站的公司电话
  • 马鞍山建设集团有限公司网站中国时政新闻
  • 常州网站建设最易wordpress 批量修改
  • 在建立网站站点的过程中网站建设开发报价方案模板
  • 印度喜欢用什么框架做外贸网站网站百度收录怎么做
  • 外贸网站建设soho电子商务公司简介怎么写
  • 视频制作网站怎么做多渠道营销平台与crm
  • 网站左侧悬浮代码有什么网站可以做婚庆视频素材
  • 乐清柳市网站建设公司做游戏试玩网站
  • 如何建设和优化一个网站湖北建设厅官网
  • 网站模版建设工具字体设计生成器
  • 建设部政务网站建设产品管理系统
  • 那些做兼职的小网站广告策划书的格式
  • 海淀区社区建设网站设计说明怎么写200字
  • 农产品网站策划外包网站开发公司
  • 微博秀 wordpress苏州优化收费
  • 医疗软件网站建设公司广州网站优化流程
  • 做网站建设优化的公司wordpress的xmlrpc协议
  • 网站制作软件小学手动更新wordpress