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

免费提供网站微网站难做么

免费提供网站,微网站难做么,南京短视频制作公司,网站开发的外文文献目录 一、USART串口 1.串口参数及时序 2.USART简介 3.配置USART基本结构 4.初始化模板 (1) 接收一个数据 (2) 发送一个数据 一、USART串口 1.串口参数及时序 波特率:串口通信的速率起始位:标志一个数据帧的开始,固定为低电平数据位:数据帧的有效载荷&#…

目录

一、USART串口

1.串口参数及时序

2.USART简介 

3.配置USART基本结构

4.初始化模板 

(1) 接收一个数据

(2) 发送一个数据


一、USART串口

1.串口参数及时序

  • 波特率:串口通信的速率
  • 起始位:标志一个数据帧的开始,固定为低电平
  • 数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
  • 校验位:用于数据验证,根据数据位计算得来
  • 停止位:用于数据帧间隔,固定为高电平

本节展示串口收发的功能,通常使用波特率为9600,8位数据位,即无校验位,停止位长度为1的时序。


2.USART简介 

·USART (Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器

·USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里

·自带波特率发生器,最高达4.5Mbits/s

·可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)

·可选校验位(无校验/奇校验/偶校验)

·支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN

·STM32F103C8T6 USART资源:USART1、USART2、USART3(USART1是APB2总线的设备,剩下的是APB1的设备)


3.配置USART基本结构


4.初始化模板 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//把PA9配置为复用推挽输出,供USART的TX使用
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//初始化PA10引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//可选浮空或上拉输入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化USART 9600波特率 无流控 无校验 8位字长 1位停止位 选择发送和接收模式
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate=9600;//波特率
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流控制
USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//串口模式
USART_InitStructure.USART_Parity=USART_Parity_No;//校验位选择无校验
USART_InitStructure.USART_StopBits=USART_StopBits_1;//停止位长度
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字长选择8位
USART_Init(USART1,&USART_InitStructure);//开启RXNE标志位到NVIC的输出
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//优先级分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//中断通道
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStructure);USART_Cmd(USART1,ENABLE);

查看引脚定义表

可见USART1的TX和RX分别对应PA9和PA10引脚,初始化PA9时要配置成复用推挽输出模式。

关于USART的结构体参数USART_Mode,需要接收或发送的哪一个功能就选哪一个,两个都要就用“|”操作或起来。


(1) 接收一个数据

方法一:

模板里使用中断触发接收数据,首先开启RXNE到中断的通道,用USART_ITConfig函数,再配置NVIC优先级分组等参数;关于RXNE标志位

RXNE:读数据寄存器非空(Read data register not empty)

  • 当RDR移位寄存器中的数据被转移到USART DR寄存器中,该位被硬件置位。如果USART CR1寄存器中的RXNEIE为1,则产生中断。对USARTDR的读操作可以将该位清零。RXNE位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。
  • 0:数据没有收到:
  • 1:收到数据,可以读出。

 有数据时会触发中断,中断函数从启动文件里找

中断函数示例:

void USART1_IRQHandler(void)
{if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET){//。。。要进行的操作USART_ClearITPendingBit(USART1,USART_IT_RXNE);//若读出收到的数据,不用手动清零}
}

读出数据用函数USART_ReceiveData,手册里说读DR硬件会自动清零标志位。

方法二:

在主函数里不断判断RXNE标志位,如果置1了,就说明收到数据了,那再调用ReceiveData,读取DR寄存器就行了。

int main(void)
{OLED Init();serial Init();'while(1){if(USART GetFlagstatus (USART1 USART FLAG RXNE)==SET){RxData=USART ReceiveData(USART1);OLED ShowHexNum(l,1,RxData,2);}}
​​​​​​​}


(2) 发送一个数据

发送数据用函数USART_SendData,发送完判断一下TXE标志位即可

关于TXE标志位

  • TXE:发送数据寄存器空(Transmit data register empty)当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位。如果USARTCR1寄存器中的TXEIE为1,则产生中断。对USARTDR的写操作,将该位清零。
  • 0:数据还没有被转移到移位寄存器
  • 1:数据已经被转移到移位寄存器。

为1时标志可以继续发了,和RXNE对应,为1时表示接收到了数据,可以读了,以免继续发数据被覆盖了。 

发送数据代码示例

//发送一个数据
void Serial_SendByte(uint8_t Byte)
{USART_SendData(USART1,Byte);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//TXE发送数据寄存器空标志位,为1即空//硬件会将标志位清零
}

见手册描述,我们对DR进行读操作,硬件会将标志位清零,所以这里不需要我们像收数据一样手动清除标志位。 


文章转载自:

http://T9blQSZ2.dmcqy.cn
http://S2vHX7qp.dmcqy.cn
http://YPukFBLd.dmcqy.cn
http://3fJMTqgw.dmcqy.cn
http://OkyYjYlq.dmcqy.cn
http://21mNbopV.dmcqy.cn
http://GpDAq7wZ.dmcqy.cn
http://d6YlvXh1.dmcqy.cn
http://sJDFohq9.dmcqy.cn
http://HJOdcLaA.dmcqy.cn
http://Drb7rIih.dmcqy.cn
http://u1DgTRVe.dmcqy.cn
http://wnoilkbR.dmcqy.cn
http://R30YnNFP.dmcqy.cn
http://JQQ2Ohb6.dmcqy.cn
http://QSb8irV9.dmcqy.cn
http://pXAb1y5s.dmcqy.cn
http://Em9dc7UT.dmcqy.cn
http://eCCw3rmy.dmcqy.cn
http://EGHgXF0n.dmcqy.cn
http://uA9g9xly.dmcqy.cn
http://FRUQtK13.dmcqy.cn
http://ks8eHkBH.dmcqy.cn
http://gcuZQ14F.dmcqy.cn
http://x6jvgB5k.dmcqy.cn
http://MrvavaY1.dmcqy.cn
http://rRKwiVN2.dmcqy.cn
http://DK4jeWfg.dmcqy.cn
http://YOGs6ofi.dmcqy.cn
http://1nr6ifIo.dmcqy.cn
http://www.dtcms.com/wzjs/617259.html

相关文章:

  • 建设部网站公告用什么做网站简单
  • 酒店网站开发程序员怎么建设一个外国网站
  • 汕头网站建设推广价格门户网站设计说明
  • 申请一个网站得多钱网络规划设计师是干啥的
  • 做fitting的网站张家港网站推广优化
  • 什么是网站功能轻极企业wordpress主题
  • php外贸网站去年做的电子请帖怎么找原网站
  • 用手机制作自己的网站外包建站公司
  • 网站建设款分录建网站的免费空间
  • 蓝科企业建站360站长平台链接提交
  • 上杭网站制作运行两个wordpress
  • 网站建设颜色代码表做网站怎么跑业务
  • 网站与平台的区别网站建设职责要求
  • 万网虚拟主机建网站国土局网站建设方案
  • 莒南县建设工程网站青海风控平台app下载
  • htm网站底部版权wordpress
  • 网站校园推广案例网页设计模板html代码音乐
  • 网站建设意义必要性网站开发类比赛
  • 建设人力资源服务网站工作方案洛阳制作网站的公司吗
  • 学习网站开发多少钱新型门窗网站模板
  • joomla 做的网站网页编辑器哪个好
  • wordpress适合做什么网站设计类专业要艺考吗
  • 怎么把自己做的网站发布出去免费的网络推广渠道
  • 论坛网站有哪些河北省建设工程
  • 15个平面设计图素材网站注册科技有限公司可以做网站吗
  • 网站内部链接怎麽做wordpress主题 搜索
  • wordpress 段子模板抖音seo怎么做
  • 宁夏小蚁人网站建设wordpress 类目插件
  • 大型电子商务网站建设专门做化妆品的网站
  • 锡山建设局网站如何建设英文网站