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

网站制作怎么做图标小程序论坛

网站制作怎么做图标,小程序论坛,百度手机提高关键词排名,网站怎么吸引人文章目录 前言一、介绍部分通信接口术语解释 串口通信简介硬件电路电平标准串口参数串口时序USART简介USART框图USRAT基本结构数据帧起始位检测波特率发生器CH340G 二、实例部分使用串口发送数据接线图代码实现重定向printf需要勾上Use MicroLIB中文不乱码方法 串口的发送与接收… 文章目录 前言一、介绍部分通信接口术语解释 串口通信简介硬件电路电平标准串口参数串口时序USART简介USART框图USRAT基本结构数据帧起始位检测波特率发生器CH340G 二、实例部分使用串口发送数据接线图代码实现重定向printf需要勾上Use MicroLIB中文不乱码方法 串口的发送与接收数据线路连接与上面一致代码实现 前言 串口通信Serial Communications的概念非常简单串口按位bit发送和接收字节。尽管比按字节byte的并行通信慢但是串口可以在使用一根线发送数据的同时用另一根线接收数据。本文主要接收使用串口发送接收数据波特率设置串口的基本时序等。 一、介绍部分 通信接口 术语解释 串口通信简介 硬件电路 电平标准 串口参数 串口时序 USART简介 USART框图 USRAT基本结构 数据帧 起始位检测 在受到噪声影响后采用21策略选择更多的作为所接收到的数据并使噪声标志位NE置1 波特率发生器 CH340G 二、实例部分 使用USART1来作为例子根据引脚定义选择正确的接口 使用串口发送数据 接线图 代码实现 配置串口Serial.c #include stm32f10x.h // Device header #include stdio.h #include stdarg.hvoid Serial_Init(void){// 开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 初始化引脚发送数据引脚GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; // 复用推挽输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_9; // A9GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 50Hz翻转速度GPIO_Init(GPIOA, GPIO_InitStructure);// 初始化串口配置USART_InitTypeDef USART_InitStructure;USART_InitStructure.USART_BaudRate 9600; // 串口波特率USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None; // 不使用流控USART_InitStructure.USART_Mode USART_Mode_Tx; // 串口模式发送USART_InitStructure.USART_Parity USART_Parity_No; // 无校验USART_InitStructure.USART_StopBits USART_StopBits_1; // 选择一位停止位USART_InitStructure.USART_WordLength USART_WordLength_8b; // 不需要校验位,八位字长USART_Init(USART1,USART_InitStructure);// USART1使能USART_Cmd(USART1,ENABLE); }// 发送函数 void USART_SendByte(uint8_t Byte){USART_SendData(USART1,Byte);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET); }// 发送数组函数 void USART_SendArray(uint8_t *Array,uint16_t Length){uint8_t i 0;for(i0;iLength;i){USART_SendData(USART1,Array[i]);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET);} }// 发送字符串函数 void USART_SendString(uint8_t *String){uint8_t i 0;for(i0;String[i]!\0;i){USART_SendData(USART1,String[i]);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET);} }// 返回X的Y次方 uint32_t Serial_Pow(uint32_t X,uint32_t Y){uint32_t Result 1;while(Y--){Result * X;}return Result; } // 发送数字函数 void USART_SendNum(uint32_t Num,uint16_t Length){uint8_t i 0;for(i0;iLength;i){USART_SendByte(Num / Serial_Pow(10,Length-i-1) % 10 0x30);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET);} }//重定向fputc函数fputc是printf函数的底层printf通过不停的调用fputc来达到输出的效果 //重定向到串口 int fputc(int ch,FILE *f){USART_SendByte(ch);return ch; }// 封装使用sprintf输出到串口 void Serial_Printf(char *format, ...) {char String[100];va_list arg; // 可变参数列表va_start(arg, format); // 从format开始接收可变参数vsprintf(String, format, arg);va_end(arg);USART_SendString((uint8_t*)String); } 主函数main.c #include stm32f10x.h // Device header #include Delay.h #include OLED.h #include Serial.hint main(void) {OLED_Init();Serial_Init();//USART_SendByte(); // uint8_t Array[] {0x41,0x42,0x43,0x44}; // USART_SendArray(Array,4); // uint8_t String[] {hello world}; // USART_SendString(String); // USART_SendNum((uint32_t)12345,5); // printf(Num %d\r\n,666); // char String[100]; // sprintf(String,Num %d\r\n,666); // USART_SendString((uint8_t*)String);Serial_Printf(一程山水);while (1){} } 重定向printf需要勾上Use MicroLIB 中文不乱码方法 代码与串口都使用utf8格式并在如下图位置加上–no-multibyte-chars 使用GB2312支持中文编码格式串口使用GBK编码格式接收即可。 串口的发送与接收数据 线路连接与上面一致 代码实现 串口配置Serial.c #include stm32f10x.h // Device header #include stdio.h #include stdarg.huint8_t RxData; uint8_t RxFlag;void Serial_Init(void){// 开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 初始化引脚GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; // 复用推挽输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_9; // A9 发送数据GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 50Hz翻转速度GPIO_Init(GPIOA, GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU; // 上拉输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_10; // A10 接收数据GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 50Hz翻转速度GPIO_Init(GPIOA, GPIO_InitStructure);// 初始化串口配置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; // 不需要校验位,八位字长USART_Init(USART1,USART_InitStructure);// 开启中断USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//初始化NVICNVIC_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);// USART1使能USART_Cmd(USART1,ENABLE); }// 发送函数 void USART_SendByte(uint8_t Byte){USART_SendData(USART1,Byte);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET); }// 发送数组函数 void USART_SendArray(uint8_t *Array,uint16_t Length){uint8_t i 0;for(i0;iLength;i){USART_SendData(USART1,Array[i]);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET);} }// 发送字符串函数 void USART_SendString(uint8_t *String){uint8_t i 0;for(i0;String[i]!\0;i){USART_SendData(USART1,String[i]);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET);} }// 返回X的Y次方 uint32_t Serial_Pow(uint32_t X,uint32_t Y){uint32_t Result 1;while(Y--){Result * X;}return Result; } // 发送数字函数 void USART_SendNum(uint32_t Num,uint16_t Length){uint8_t i 0;for(i0;iLength;i){USART_SendByte(Num / Serial_Pow(10,Length-i-1) % 10 0x30);// 等待写入完成写入完成之后会将标志位自动清0while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) RESET);} }//重定向fputc函数fputc是printf函数的底层printf通过不停的调用fputc来达到输出的效果 //重定向到串口 int fputc(int ch,FILE *f){USART_SendByte(ch);return ch; }// 封装使用sprintf输出到串口 void Serial_Printf(char *format, ...) {char String[100];va_list arg; // 可变参数列表va_start(arg, format); // 从format开始接收可变参数vsprintf(String, format, arg);va_end(arg);USART_SendString((uint8_t*)String); }// 获取RxFlag uint8_t USART_GetRxFlag(void){if(RxFlag 1){RxFlag 0;return 1;}return 0; }// 获取RxData uint8_t USART_GetRxData(void){return RxData; }//中断函数 void USART1_IRQHandler(void){if(USART_GetITStatus(USART1,USART_IT_RXNE)SET){RxData USART_ReceiveData(USART1);RxFlag 1;USART_ClearITPendingBit(USART1,USART_IT_RXNE);} } 主函数main.c #include stm32f10x.h // Device header #include Delay.h #include OLED.h #include Serial.huint8_t Serial_RxData;int main(void) {OLED_Init();OLED_ShowString(1, 1, RxData:);Serial_Init();while (1){if (USART_GetRxFlag() 1){Serial_RxData USART_GetRxData();USART_SendByte(Serial_RxData);OLED_ShowHexNum(1, 8, Serial_RxData, 2);}} }
http://www.pierceye.com/news/342489/

相关文章:

  • 电商网站设计说明书php网站服务器架设
  • 精品课程网站开发项目电子商务的分类
  • 网站建设成品动漫网站建设答辩ppt
  • 邯郸网站设计价格做网站哪便宜
  • 建设网站的一般步骤网站设计下载
  • 广东同江医院网站建设建站网站图片不显示
  • 免费在线响应式网站自助建站网站网页怎么设计
  • 池州网站建设抚顺网站建设公司
  • 网站如可引导客户义乌小程序开发制作公司
  • 环境设计排版素材网站周口市住房和城乡建设局网站
  • 建设部资质查询网站wordpress采集英文
  • 深圳北站设计方案高质量网站外链平台
  • 苏州做网站优化的公司国外 网站页面
  • 网站建设流程发布网站和网页制作鲜花网站建设论文百度文库
  • 建个人网站赚钱吗手机网站页面大小
  • php简单购物网站源码海口网红美食餐厅
  • 傻瓜式建站软件长沙做软件的公司
  • 旅行社营业网点可以做网站吗别人网站建设多少钱
  • 南宁设计网站建设教程网站建设
  • 柯城区住房和城乡建设局网站wordpress仿fe素材
  • 黄岛建设局网站用什么建设网站
  • 桂林dj网站郑州上海做网站的公司
  • 进入江苏省住房和城乡建设厅网站网络舆情监测 toom
  • 延安市建设工程交易中心网站seo网络营销推广优化
  • 网站一条龙服务教育类网站前置审批
  • 安徽省建设厅网站首页wordpress和typecho
  • 网站开发考试题torrentkitty磁力猫引擎
  • 如何把电脑改成服务器 做网站微信网站背景图片
  • 淘宝客网站建设详细教程链接交换平台
  • 外贸门户网站深圳网站制作开发排名