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

排名网站建设主要的电子商务网站有哪些

排名网站建设,主要的电子商务网站有哪些,在网站后台备案号怎么改,网站程序制作教程前言#xff1a; 串口是很重要的#xff0c;有许多模块通信接口就是串口#xff0c;例如gps模块#xff0c;蓝牙模块#xff0c;wifi模块还有一些精度比较高的陀螺仪模块等等#xff0c;所以学会了串口之后#xff0c;这些听起来很牛批的模块都能够用起来了。此外#…前言 串口是很重要的有许多模块通信接口就是串口例如gps模块蓝牙模块wifi模块还有一些精度比较高的陀螺仪模块等等所以学会了串口之后这些听起来很牛批的模块都能够用起来了。此外单片机的之间的通信也大多用串口如距离比较长的RS485,RS232,光纤通信等等有线通信也只是电平转换芯片不一样但是代码层面完成是一样的作为单片机开发串口是很必要熟练的。在学习的第二阶段尽量还是照着手册来编写代码或者说根据自己的思路来嫖代码而不是像初次学习一样代码、思路都嫖别人的。这样才能最大限度的检验自己的能力当然做项目怎样都成怎么方便怎么来。 思路 下面就来记录记录我个人的编码思路首先由下图可以看到串口的模式还是挺多的 这样相应的寄存器也就必然很多所以从一开始就需要明确我们需要的是哪种模式然后就只关注这个模式与之无关的寄存器都可以忽略如此编码就简单清晰了。以最常用的异步模式为例 手册没有讲初始化流程所以只能按照经验来写代码了回忆串口无非就是串口时钟使能配置数据位停止位等配置波特率使能串口从寄存器读出数据/向寄存器写入数据。一般为了方便数据处理还加一个接收中断。但是~串口不只是串口还涉及GPIO初始化GPIO复用配置。 1.初始化GPIO相关配置 三部曲时钟IO复用啥 GPIOx-AFR这个寄存器就是将某个GPIO管脚复用成指定功能的。下面AF虽多但是要根据数据手册引脚说明来选芯片没有设计的当然选了也没用。我没有在手册找到AF对应的是什么不过正点原子的代码有写也不知哪里找的。 //AF0~15设置情况(这里仅是列出常用的,详细的请见407数据手册,56页Table 7): //AF0:MCO/SWD/SWCLK/RTC AF1:TIM1/TIM2; AF2:TIM3~5; AF3:TIM8~11 //AF4:I2C1~I2C3; AF5:SPI1/SPI2; AF6:SPI3; AF7:USART1~3; //AF8:USART4~6; AF9;CAN1/CAN2/TIM12~14 AF10:USB_OTG/USB_HS AF11:ETH //AF12:FSMC/SDIO/OTG/HS AF13:DCIM AF14: AF15:EVENTOUT 编码如下 1.时钟 RCC-AHB1ENR|10; //GPIOA时钟附属于AHB1 2.IO GPIO_Set(GPIOA,PIN9|PIN10,GPIO_MODE_AF,0,0,0);//PA9,PA10,都配置为复用模式其他电气属性如上下拉之类的可以根据需要配置不配置也行的。 3.复用啥直接用正点原子的函数里面其实就是对GPIOx-AFRH和GPIOx-AFRL这两个寄存器进行编写不过正点原子这个封装的挺好的一目了然 GPIO_AF_Set(GPIOA,9,7); //PA9,AF7 GPIO_AF_Set(GPIOA,10,7);//PA10,AF7 2.串口相关初始化 目的是串口时钟使能配置数据位停止位,接收中断使能串口等配置波特率从寄存器读出数据/向寄存器写入数据。 由手册第66页可知USART1时钟隶属于APB2 1.使能串口1时钟     RCC-APB2ENR|14;    2.配置波特率 根据公式算然后填到对应的位里面去 float temp;u16 mantissa; //整数部分u16 fraction; //小数部分temp(float)(pclk2*1000000)/(bound*16);//得到USARTDIVOVER80mantissatemp; //得到整数部分fraction(temp-mantissa)*16; //得到小数部分OVER80 mantissa4;mantissafraction; USART1-BRRmantissa; //波特率设置 这个是正点原子那嫖的适用于多种时钟多种波特率的情况挺好用的。 3.配置数据位停止位中断等 USART_CR1检索只看和异步通信有关的位其他的不管 bit[2]:        接收使能 bit[3]:        发送使能 bit[5]:        接收中断使能 bit[10]:       关/开奇偶检验 bit[12]:       置零1 起始位8 数据位n 停止位 bit[13]:        串口关闭/使能后面记得给这个串口中断分组以及设置优先级 bit[15]:        0:16倍过采样率18倍过采样率这个是和波特率计算有关的设为0 其他就无所谓了好像这个寄存器就完全够配置我们所需了 USART1-CR1 015 | 113 | 012 | 010 | 15 | 13 | 12 ; //中断分组及优先级中断后面有时间再讲其核心思想就是分组中断线设优先级三部曲 MY_NVIC_Init(3,3,USART1_IRQn,2);//组2最低优先级 4.完整的串口初始化代码如下 void uart_init(u32 pclk2,u32 bound) { float temp;u16 mantissa;u16 fraction; //1.GPIO初始化相关RCC-AHB1ENR|10; //使能PORTA口时钟 GPIO_Set(GPIOA,PIN9|PIN10,GPIO_MODE_AF,0,0,0);//PA9,PA10,复用功能GPIO_AF_Set(GPIOA,9,7); //PA9,AF7GPIO_AF_Set(GPIOA,10,7);//PA10,AF7 //2.使能串口1时钟 RCC-APB2ENR|14; //3.波特率设置temp(float)(pclk2*1000000)/(bound*16);//得到USARTDIVOVER80mantissatemp; //得到整数部分fraction(temp-mantissa)*16; //得到小数部分OVER80 mantissa4;mantissafraction; USART1-BRRmantissa; //波特率设置 //4.配置数据位停止位中断等USART1-CR1 015 | 113 | 012 | 010 | 15 | 13 | 12 ;//中断分组及优先级中断后面有时间再讲其核心思想就是分组中断线设优先级三部曲MY_NVIC_Init(3,3,USART1_IRQn,2);//组2最低优先级 } 运行效果 其他代码不改动换上自己思路写的代码运行ok 3.中断服务函数 a.它最原始的模样 void USART1_IRQHandler(void) {u8 res; if(USART1-SR(15))//接收到数据的标志置1----有数据{ resUSART1-DR; //取出接收到的数据----1B} } 如果要发送数据可以编写如下 u8 res; USART1-DR res;//要发送的数据 1B while((USART1-SR0X40)0);//等待发送结束 b.正点原子给的 u8 USART_RX_BUF[USART_REC_LEN]; //里面存着接收到的数据u16 USART_RX_STA0; //是否有数据标志接收到的字节数//下面这个不用改它原封不动放代码里就能用 void USART1_IRQHandler(void) {u8 res; if(USART1-SR(15))//接收到数据{ resUSART1-DR; if((USART_RX_STA0x8000)0)//接收未完成{if(USART_RX_STA0x4000)//接收到了0x0d{if(res!0x0a)USART_RX_STA0;//接收错误,重新开始else USART_RX_STA|0x8000; //接收完成了 }else //还没收到0X0D{ if(res0x0d)USART_RX_STA|0x4000;else{USART_RX_BUF[USART_RX_STA0X3FFF]res;USART_RX_STA;if(USART_RX_STA(USART_REC_LEN-1))USART_RX_STA0;//接收数据错误,重新开始接收 } }} } } 其中 判断有无数据接收 if(USART_RX_STA0x8000){。。。。。。} 得知数据共有多少B int lenUSART_RX_STA0x3fff;//得到此次接收到的数据长度 数据存放的数组 USART_RX_BUF[] 相对来说以及挺方便的了~下面还有一个比赛常用的自定义的协议 c.自定义协议 首先在usart.c中加入变量 /*更改变量 BEGIN-- */ uint8_t uart1_rxbuff;//引入该.h可使用 uint8_t uart2_rxbuff;//引入该.h可使用 uint8_t uart3_rxbuff;//引入该.h可使用uint8_t sendBuf[1]; u8 uart1_sdbuffer[11]{0x2c,0x12,0x11,0x22,0x33,0x5b,0,0,0,0};//从索引2开始赋值 /*更改变量 END-- */ 在usart.h中导出方便别的文件使用 extern uint8_t uart1_rxbuff; extern uint8_t uart2_rxbuff; extern uint8_t uart3_rxbuff;extern uint8_t uart1_sdbuffer[11]; 下面是协议解析函数自定义的协议是 协议头0x2c,0x12 协议尾0x5b想要让协议数据位变多只需要修改变量RxBuffer1[]的定义即可 //解析接收的数据 最多11哥两个帧头一个帧尾其他是数据位 void Portocol_Receive_Data(uint8_t com_data) {uint8_t i;static uint8_t RxCounter10;//计数static uint8_t RxBuffer1[11]{0};static uint8_t RxState 0; static uint8_t RxFlag1 0;u8 pi0;//printf(%x\t,com_data);//打印调试if(RxState0com_data0x2C) //0x2c帧头 RxCounter11{RxState1;RxBuffer1[RxCounter1]com_data; }else if(RxState1com_data0x12) //0x12帧头 RxCounter12{RxState2;RxBuffer1[RxCounter1]com_data;}else if(RxState2)//开始接收数据位{ RxBuffer1[RxCounter1]com_data;if(RxCounter110||com_data 0x5B){//RxCounter1-1是帧尾if(RxBuffer1[RxCounter1-1] 0x5B)//接收到贞结尾了{/* USER CODE BEGIN 2 */ // for(i 0; i 10; i) // { // printf(%x\t,RxBuffer1[i]); // } // printf(\r\n);USART1_Portocol_Send_Data(); // printf(\r\n);/* USER CODE END 2 */RxFlag1 0;RxCounter1 0;RxState 0;}else //接收错误{RxState 0;RxCounter10;for(i0;i11;i){RxBuffer1[i]0x00; //将存放数据数组清零}}}}else //接收异常{RxState 0;RxCounter10;for(i0;i10;i){RxBuffer1[i]0x00; //将存放数据数组清零}} } 中断服务函数是这样滴 void USART1_IRQHandler(void) {if(USART1-SR(15))//接收到数据{ uart1_rxbuff USART1-DR;Portocol_Receive_Data(uart1_rxbuff);} } 另外还有一个协议配套的发送函数 要修改发送的内容只需修改uart1_sdbuffer数组的内容即可 //串口X发送函数 void USART1_Portocol_Send_Data(void) {u8 i;for(i 0; i 10; i){USART1-DRuart1_sdbuffer[i];//要发送的数据 1Bwhile((USART1-SR0X40)0);//等待发送结束} } 效果如下 在协议代码中下面这部分就是给你自由发挥的进到这段代码里说明成功接收到了按协议格式发来的信息; 4.拓展到其他串口 复用到其他的串口也很简单仿照把发送呀接收呀里面的寄存器改一改就行了 比赛常用的还是自定义协议的串口比如双车用蓝牙通讯呀或者stm32和openmv通讯几乎都要自己写一个协议去收发数据这样才会可靠。 完~
http://www.w-s-a.com/news/245102/

相关文章:

  • 网站整体色调网站建设都有什么类型
  • 比较简洁大方的网站软件工程四大方向
  • 大家称赞的网站建设常德小学报名网站
  • 做网站怎么建文件夹百度网盘搜索神器
  • 企业有域名怎么做网站淘宝推广平台
  • 学网站开发去哪学药品销售推广方案
  • 哔哩哔哩h5播放器深圳网站seo外包公司哪家好
  • asp做的手机网站wordpress 文章title
  • 网站验证码目录wordpress内嵌播放器
  • 文明网网站建设南昌市建设规费标准网站
  • 安康有建网站的公司吗做网站用什么网名好
  • 济南网站制作哪家专业西安市城乡建设网官方网站
  • 网站建设有趣小游戏怎样让网站优化的方式
  • 昭通做网站儿童编程教学入门教程
  • eclipse静态网站开发软文广告投放平台
  • 网站建设教学视频济南做网站需要多少钱
  • 网站免费做软件市工商联官方网站建设方案
  • 网站建设大体包含英铭长沙网站建设
  • 网站建设培训学校北京如何搜索网站
  • discuz论坛模板哪些网站容易做seo优化
  • 渭南公司做网站网站建设互联网推广
  • 公司网站app怎么做杭州建设局网站
  • 网站开发需要自己写代码吗12306网站多少钱做的
  • 策勒网站建设四川建设网有限责任公司招聘
  • 网站建设哪里有学网页界面设计论文
  • 怎么做外贸网站推广劳务公司网站怎么做
  • 滴答手表网站中铁建设集团有限公司招聘信息2021
  • 重庆富通科技有限公司网站新闻头条最新消息国家大事
  • 四字母net做网站怎么样企业代运营公司
  • 纪检网站建设方案wordpress首页静态页面