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

口碑好的网站建设价格徐州百度运营中心

口碑好的网站建设价格,徐州百度运营中心,做文学类网站后期花费,360浏览器建设银行网站单片机通过串口向PC机发送数据 PC机通过串口接收单片机发过来的数据 1.UART和USART的区别: USART支持同步通信方式,可以通过外部时钟信号进行同步传输,而UART仅支持异步通信方式 本开发板STM32F103ZET6有5个串口,用串口1作调试串口,因为串…

单片机通过串口向PC机发送数据

PC机通过串口接收单片机发过来的数据

1.UART和USART的区别:

USART支持同步通信方式,可以通过外部时钟信号进行同步传输,而UART仅支持异步通信方式

本开发板STM32F103ZET6有5个串口,用串口1作调试串口,因为串口通信和一键下载电路连接到了串口1上面,所i用串口1做调试串口

PA9因为传输输出的数据有高有低,串口1是外设,复用推挽输出,

PA10输入模式,只要不是模拟输入就行

1.IO初始化:PA9
usart外设初始化,另外需要写串口外设启动函数:USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
中断初始化,

2,写串口发送和接收函数

3,主函数调用

1,IO初始化:PA9

usart外设初始化,另外需要写串口外设启动函数:USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
中断初始化,
//PA9复用推挽输出  PA10浮空输入
void Usart_Init(void)
{//GPIO 开时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//库函数编程 IO初始化GPIO_InitTypeDef GPIO_InitStructure={0}; //定义结构体GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);//2外设初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);USART_InitTypeDef USART_InitStructure={0}; USART_InitStructure.USART_BaudRate = 9600; //波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位长度USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位长度USART_InitStructure.USART_Parity = USART_Parity_No; //奇偶失能USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//硬件流控制失能USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); //使能USART1 外设//中断初始化NVIC_InitTypeDef NVIC_InitStructure={0}; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //中断通道:stm32f10x.h中NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //开启串口1接收中断USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 
}

因为还没有写中断源,不能判断是哪个中断,所以先不写中断服务函数USART1_IRQHandler

2,写串口发送和接收函数

串口的作用是通信,收发信息,所以先写串口的收发操作:发送函数和接收函数

发送函数:1,等待发送寄存器为空,也就是等待上一次数据发送完毕,所以需要一个能够获取串口的寄存器状态的函数,查看串口相关的库函数找到USART_GetFlagStatus (检查指定的 USART 标志位设置与否),等待发送寄存器为空:由下图知,当TXE等于1,即==SET,数据已经被转移到移位寄存器,表示数据已经发送完毕,

然后发送数据,查看串口相关的库函数找到串口发送函数USART_SendData(通过外设 USARTx 发送单个数据)

 接收函数分析同上,只不过接收函数需要另外定义变量接收函数返回值

void Usart_Send(uint8_t data)
{//等待发送数据寄存器为空(等待上一次数据发送完毕)//当不为1时,也就是数据没有发送完毕,进入循环,不执行发数据//等于1发送寄存器为空,上一次数据发送完毕,可以发送数据了,所以不进入循环,直接执行发送数据函数while( USART_GetFlagStatus(USART1, USART_FLAG_TXE)!=SET){} //参考手册--中文P540//通过外设 USARTx 发送单个数据,库函数USART_SendData (USART1,data);
}uint8_t Usart_Rece(void)
{//等待接收数据寄存器为空(等待上一次数据发送完毕)while( USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!=SET){} //参考手册--中文P540//接收数据uint8_t data = USART_ReceiveData(USART1);return data;
}

 使用该函数可以实现打印串口发送的函数,(为什么代码这样写?官方规定的就是这样)

#include "stdio.h"
//fputc发送一个,串口打印数据
int fputc(int a,FILE *p)
{//串口发送函数Usart_Send(a);return a;
}

3.主函数这样写:

 运行可看到现象:

http://www.hkea.cn/news/45427/

相关文章:

  • 天津网站建设公司最好太原做网站哪家好
  • 网站代下单怎么做百度指数数据分析平台入口
  • 淘宝做动效代码的网站seo的优化方向
  • 番禺建网站公司网站搜索工具
  • 安徽万振建设集团网站长春网站推广公司
  • 网站怎么制作 推广seo超级外链工具免费
  • 中小学网站建设探讨东莞seo整站优化火速
  • php是网站开发的语言吗企业网站的作用
  • 网站站外优化怎么做企业推广app
  • 拉趣网站是谁做的威海网站制作
  • 做宣传海报的网站百度导航2023年最新版
  • 湖南做网站 磐石网络windows优化大师官方免费
  • 制作网站的最新软件如何优化关键词的方法
  • 东莞工作招聘网最新招聘搜索 引擎优化
  • 宁波俄语网站建设免费发广告的平台有哪些
  • 郑州外贸网站建设及维护营销软件商城
  • 泉州百度关键词排名广州网站营销优化qq
  • 怎么做wep网站营销推广活动方案
  • 展示型网站php官方app下载安装
  • 嘉祥网站建设广东省自然资源厅
  • 忘记网站后台密码网站排名软件推荐
  • 怎么查公司网站有没有被收录火爆产品的推广文案
  • 绵阳网站建设 经开区网络教学平台
  • wordpress阅读量没改7个湖北seo网站推广策略
  • 网站建设成功案例方案找培训机构的平台
  • 园林绿化网站建设百度关键词优化公司
  • 个人如何建设网站网络营销方式有哪些分类
  • 北京做百度网站建设电商平台如何推广运营
  • 电脑个人网站怎么做网络销售新手入门
  • 海口网站建设 小黄网络手机百度搜索