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

《微处理器系统原理与应用设计第十三讲》通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信,并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。

一、功能需求

实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART(串口)与用户设备(上位机)相连。上位机每次发送一个字符后等待测控设备将收到的字符回传到上位机。对于测控设备而言,提供一种回传功能,即收到一个字符就立刻发送出去。

二、设计思路

管脚PA2与PA3分别设置为USART2的TX和RX信号,在通信过程中,USART检查接受状态,一旦收到数据,立刻将新数据发送出去,如此反复执行。

三、程序设计

(1)USART初始化函数

PCLK为16MHz,波特率为9600,BRR寄存器的值为PCLK/RBaud = 1667。

void UartInit(void)
{RCC->AHB1ENR|=1; //使能GPIOA时钟RCC->APB1ENR|=1<<17; //使能USART2时钟//配置PA2,PA3为复用、推挽输出、高速GPIOA->MODER = (GPIOA->MODER&~(0xF<<4))|(0xA<<4);GPIOA->OTYPER&=~(0xF<<4);GPIOA->OSPEEDR = (GPIOA->OSPEEDR&~(0xF<<4))|(0xA<<4);//设置AFRL寄存器,PA2,PA3复用模式为AF7,分别为USART的TX和RXGPIOA->AFR[0] = (GPIOA->AFR[0]&~(0xFF<8))|(0x77<8);USART2->BRR = 1667;USART2->CR1 = (1<<13)|(1<<3)|(1<<2); //使能收发功能
}

(2)串口数据接收函数

UartRx函数用来获取已经接收到的数据,仅当收到数据时才读取数据并成功返回,未收到返回时返回失败。

int UartRx(char* prxd)
{if(!(USART2->SR&(0x1<<5)))return 0;*prxd = (char)USART2->DR; //对指针所指的变量赋值return 1;
}

 (3)数据发送函数

UartTx函数用来发送数据,仅当发送数据寄存器空了才写入数据并成功返回,发送数据寄存器未空时返回失败。

int UartTx(char txd)
{if(!(USART2->SR&(0x1<<7)))return 0;USART2-DR = txd;return 1;
}

 


http://www.mrgr.cn/news/29806.html

相关文章:

  • 算法之搜索--最长公共子序列LCS
  • 剃(磨)前插齿刀设计计算开发第二步:
  • Element Plus图片上传组件二次扩展
  • Android 中音频焦点的使用场景及示例
  • ssh远程连接try1账号切换tips
  • Java 之多线程高级
  • 计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 使用python 将world的题库导入某学习软件的模板
  • 2024年9月python二级易错题和难题大全(附详细解析)(二)
  • MatchRFG:引领MemeCoin潮流,探索无限增长潜力
  • 论文不会写?分享6款AI论文写作免费一键生成网站!
  • Python urllib
  • LinuxC++的UDP服务器和客户端通信
  • 钢索缺陷检测系统源码分享
  • 1×1卷积核【super star 卷积核】
  • 人工智能与机器学习原理精解【21】
  • 图文检索(2):Visual-Linguistic Dependency Encoding for Image-Text Retrieval
  • 计算机网络的性能指标
  • 入门sentinel
  • 利用ClasserLoader来实现jar包加载并调用里面的方法