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

天津网站制作建设WordPress在线转义

天津网站制作建设,WordPress在线转义,国家商标查询官网入口,品牌推广理论文章目录 一、串口环形缓冲区概念二、STC12例程#xff08;1#xff09;环形串口缓冲区结构体#xff08;2#xff09;串口环形缓冲区存和取数据#xff08;3#xff09;完整工程demo 一、串口环形缓冲区概念 串口环形缓冲区应用于嵌入式、物联网开发中处理接收串口数据… 文章目录 一、串口环形缓冲区概念二、STC12例程1环形串口缓冲区结构体2串口环形缓冲区存和取数据3完整工程demo 一、串口环形缓冲区概念 串口环形缓冲区应用于嵌入式、物联网开发中处理接收串口数据量过大的问题。串口环形缓冲简单理解就是建立一个数组将串口的数据存到数组里缓存待空闲时处理。而缓存区越大那么可以缓存的数据就越多。 环形串口缓冲区建立的数组还要再定义一个头和一个尾。这时有三种情况 1、当头等于尾时我们便知道此时环形串口缓冲区无数据此时不进行读操作。 2、有数据来时数组存储数据并且头按数据的长度向前移动空闲时尾开始取数据直到尾等于头为止。 3、当头存到数组长度的最后一位时返回数组第一位开始存数据。 因为头开始存数据到最后一位时便有返回数组第一位开始存数据此时我们就可以想象这个数据是一个类似甜甜圈的环形这便是串口环形缓冲区。 二、STC12例程 要想写串口环形缓冲区首先需要初始化串口和接收中断处理保证串口收发正常初始化串口部分默认大家都懂了直接略过我自己编写的例程使用STC12因为STC12单片机是51单片机的升级版本几乎学过51单片机的都能看得懂比较简单现在企业的开发标配是STM32了这时只需移植过去即可。我提供两种MCU的串口初始化供大家参考 STM32F1x固件库函数学习笔记一 STC12C5A60S2串口通信(使用独立波特率发生器) 1环形串口缓冲区结构体 串口初始化好后建立一个环形缓冲区结构体 //环形缓冲区结构体 typedef struct {uint8_t head_count; //头计数uint8_t tail_count; //尾计数uint8_t buf[UART_RX_MAX]; //缓冲区数组 }UART_S;下一步我们便可以定义结构体变量初始化结构体 UART_S uart;//定义串口缓冲区结构体变量//串口环形缓冲区初始化 void uart_Buffer_Init(void) {int i;uart.head_count 0;uart.tail_count 0;for(i0; iUART_RX_MAX; i){uart.buf[i] 0x00;} }2串口环形缓冲区存和取数据 下面就是串口环形缓冲代码里比较关键的部分分别写一个放数据和取数据的函数。 放数据的函数逻辑是有数据来时将数据存入串口环形缓冲区当存到数组的最后一位时返回从第一位存起。 取数据的逻辑是先进行一个判断当判断缓冲区的头和尾不一样时这时认为缓冲区有数据我们便开始从缓冲环形缓冲区里取数据当取到数组最后一位时返回数组第一位从第一位开始取数据。 //往缓冲器里放数据 void uart_buf_put(uchar ch) {uart.buf[uart.head_count] ch;if(uart.head_count UART_RX_MAX){uart.head_count 0;} }//判断缓冲区是否有数据 int fifo_is_empty(void) {if(uart.head_count ! uart.tail_count)//判断如果头不等于尾{return 0;//有数据}else return 1;//无数据 }//从缓冲区取数据 int uart_buf_get(uchar *ch) {if(fifo_is_empty() 0)//如果有数据{*ch uart.buf[uart.tail_count];//取数据if(uart.tail_count UART_RX_MAX){uart.tail_count 0;} return 1;//返回成功}else return 0;//返回失败 }下一步我们再写一个读数据的函数一个简单的串口环形缓冲区就写完了我们使用的时候只需把存数据放到中断里然后在主函数里取数据就行了。 //读数据 void debug_read(void) {uchar ch;/*如果有数据就一直取直到取完为至*/while(!fifo_is_empty()){if(uart_buf_get(ch)){putchar(ch);}} }void main() {UartInit();//初始化串口uart_Buffer_Init();//初始化串口环形缓冲区while(1){debug_read();} }//串口中断处理函数 void uart_Interrupt() interrupt 4 {unsigned char UartData;//单字节串口数据if(RI){RI 0;UartData SBUF;uart_buf_put(UartData);//往串口缓冲区存数据} }3完整工程demo #include STC12C5A60S2.h//宏定义 #define uchar unsigned char #define uint unsigned int#define UART_RX_MAX 255 //数组最大值//环形缓冲区结构体 typedef struct {uchar head_count; //头计数uchar tail_count; //尾计数uchar buf[UART_RX_MAX]; //缓冲区数组 }UART_S;UART_S uart;//定义串口缓冲区结构体变量//串口初始化晶振11.0592波特率9600 void UartInit(void) //9600bps11.0592MHz {PCON 0x7F; //波特率不倍速SCON 0x50; //8位数据,可变波特率AUXR | 0x04; //独立波特率发生器时钟为Fosc,即1TBRT 0xDC; //设定独立波特率发生器重装值AUXR | 0x01; //串口1选择独立波特率发生器为波特率发生器AUXR | 0x10; //启动独立波特率发生器EA 1;//开总中断ES 1;//开串口中断 }//向串口发送一个字符 void putchar(char ch) {SBUF ch;while(!TI);TI 0; }//向串口发送一段字符串 //void prints(char *s) //{ // while(*s ! \0)//发送字符串,直到遇到0才结束 // { // SBUF *s; // while(!TI); // TI 0; // } //}//串口环形缓冲区初始化 void uart_Buffer_Init(void) {int i;uart.head_count 0;uart.tail_count 0;for(i0; iUART_RX_MAX; i){uart.buf[i] 0x00;} }//往缓冲器里放数据 void uart_buf_put(uchar ch) {uart.buf[uart.head_count] ch;if(uart.head_count UART_RX_MAX){uart.head_count 0;} }//判断缓冲区是否有数据 int fifo_is_empty(void) {if(uart.head_count ! uart.tail_count)//判断如果头不等于尾{return 0;//有数据}else return 1;//无数据 }//从缓冲区取数据 int uart_buf_get(uchar *ch) {if(fifo_is_empty() 0)//如果有数据{*ch uart.buf[uart.tail_count];//取数据if(uart.tail_count UART_RX_MAX){uart.tail_count 0;} return 1;//返回成功}else return 0;//返回失败 }//读数据 void debug_read(void) {uchar ch;/*如果有数据就一直取直到取完为至*/while(!fifo_is_empty()){if(uart_buf_get(ch)){putchar(ch);}} }void main() {UartInit();//初始化串口uart_Buffer_Init();//初始化串口环形缓冲区while(1){debug_read();} }//串口中断处理函数 void uart_Interrupt() interrupt 4 {unsigned char UartData;//单字节串口数据if(RI){RI 0;UartData SBUF;uart_buf_put(UartData);//往串口缓冲区存数据} }
http://www.dnsts.com.cn/news/108704.html

相关文章:

  • 用iis浏览网站wordpress淘宝客主题下载
  • 什么网站可以做软件有哪些整站seo技术
  • 用虚拟机做网站的心得体会稿定设计在线制作官网
  • 技术支持-鼎维重庆网站建设专家足球直播网站怎么做的
  • 网站文章采集to a wordpress
  • 做网站可以使用免费空间吗iis怎么配置网站
  • 哪个网站专门做高清壁纸wordpress文章头图
  • 如何修改网站关键词苏州品牌网站设计
  • 江门网站推广技巧个人网页设计文档说明模板
  • 市场推广和销售的区别中山seo建站
  • 低价网站建设哪家便宜成都j网站制作
  • 有哪些专门做减肥内容的网站哪些网站可以做免费外贸
  • c语言在线编程网站黑马it培训班出来现状
  • 阿里云服务器可以做网站吗网站租用一年服务器费用多少
  • 福州一站式品牌推广运营公司wordpress 3 企业主题下载
  • 网站建设企业模板哪家好设计师的免费设计软件
  • 做标书有哪些网站能接到wordpress 显示错误500
  • 怎么做一个购物平台网站企业移动网站建设
  • 建个什么网站好沈阳品牌设计
  • 黄山工程建设信息网站wordpress右键插件
  • 网站名称怎样做wordpress搬家后
  • 科技馆网站建设背景网络公司市值最新排名
  • 西安网站制作价格用照片做视频的网站好
  • 医疗网站被黑后可以做排名用人名做网站域名
  • 传统企业网站建设绵阳科技网站建设
  • 2018年网站建设工作总结网站框架怎么做
  • 成都网站设计制作公司搜索引擎营销的步骤
  • 临沂百度网站推广彩票做网站
  • 深圳做网站建设开发wordpress网站嵌入音乐
  • 在线商城网站制作做网站安全认证