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

企业网站对网络营销的意义深圳市网站建设做网站

企业网站对网络营销的意义,深圳市网站建设做网站,产品单页营销型网站模板,楚雄自助建站系统一、简介 本文主要介绍STM32如何配合USART的IDLE中断实现USART DMA接收不定长的数据。其中使用的接收缓存还是延用前面博客写的乒乓缓存。使用DMA USART接收来替代中断方式或轮询方式的接收主要是为了提高代码的运行效率#xff0c;中断方式的接收#xff0c;每接收一个字节便…一、简介 本文主要介绍STM32如何配合USART的IDLE中断实现USART DMA接收不定长的数据。其中使用的接收缓存还是延用前面博客写的乒乓缓存。使用DMA USART接收来替代中断方式或轮询方式的接收主要是为了提高代码的运行效率中断方式的接收每接收一个字节便会产生一个中断当串口有大量数据需要接收时会造成CPU不停的被中断打断频繁的出入栈造成整个系统不稳定的情况且也会影响到主任务里其它流程的执行时序造成主任务里的流程滞后现象影响其它事情的实时性。引进DMA的接收正是为了解决该问题。 二、设计思路 USART 使用DMA方式接收需要考虑到从USART传输进来的数据可能会出现不定长等现象在通信协议上该问题属于正常现象。但DMA的传输又需要指定特定长度因此在配置DMA时我们很难得知要配置多少接收长度接收长度配置多了DMA不会产生传输完成标志配置少了又可能造成频繁触发DMA现象导致数据不好处理出现要拼包等现象。因此这里使用STM32的特性空闲中断来判断一次DMA的传输完成。空闲是指在串口接收到一帧数据后没有再接收到数据此时会产生一个空闲帧此时会置位IDLE位如若配置置IDLEIE位则会进入中断。注首次配置USART初始化开启TE位的时候也会产生空闲帧需要滤掉。 二、配置流程 1) USART 使能IDLEIE位 使能USART1的空闲中断 USART1-CR1 | 1 4; // enable IDLE interrupt 2 USART 配置DMA接收初始化 DMA_USART1_Receive_Config(DMA1_Channel5, (u32)USART1-DR);void DMA_USART1_Receive_Config(DMA_Channel_TypeDef* DMA_CHx, u32 cpar) {DMA_CHx-CPAR cpar; //cfg periph addr DMA_CHx-CCR | 3 12; //cfg channel prio 3DMA_CHx-CCR ~(1 4); //cfg periph to memDMA_CHx-CCR ~(1 5); //cfg dma single transferDMA_CHx-CCR | 1 7; //cfg mem transfer addr inc } 3使能USART DMA接收 DMA_UART1_RECEIVE_ENABLE(DMA1_Channel5, (u32)p_cur_Usart1_Handle, 256);void DMA_UART1_RECEIVE_ENABLE(DMA_Channel_TypeDef* DMA_CHx, u32 cmar, u16 cndtr) {USART1-CR3 | 1 6; //enable uart dma rxDMA_CHx-CCR ~(1 0); //dma channel disableDMA_CHx-CMAR (u32)cmar; //cfg mem addrDMA_CHx-CNDTR cndtr; //cfg transfer lendma_cfg_recieve_cnt DMA_CHx-CNDTR;DMA_CHx-CCR | 1; //dma channel en } 4USART IDLE中断处理 在void USART1_IRQHandler(void)中断函数里通过获取DR寄存器清IDLE位。并置位recieve_idle 通知处理数据帧。 if (USART1-SR (1 4)){u8 temp;temp USART1-DR;recieve_idle 1;} 5IDLE 的处理 主循环轮询产生IDLE的话表示当前收到一帧完整数据帧则需要处理处理流程关DMA USART接收-获取DMA 传输数据量-切换接收缓存即取发送缓存-使能DMA USART接收。 void idle_process(void) {if (recieve_idle){recieve_idle 0;DMA_UART1_RECEIVE_DISABLE(DMA1_Channel5);p_cur_Usart1_Handle-len GET_DMA_TRANSFER_CNT(DMA1_Channel5);change_curFifo();DMA_UART1_RECEIVE_ENABLE(DMA1_Channel5, (u32)p_cur_Usart1_Handle, 256);} } 6USART DMA发送 该内容参考上一篇博客STM32 寄存器配置笔记——USART DMA发送 具体代码如下
http://www.hkea.cn/news/14573734/

相关文章:

  • php网站建设流程php网站屏蔽词怎么做
  • 网站qq统计网络培训意义
  • 推广网站加盟做一个内容网站多少钱
  • 电商网站链接买卖深圳制作网站公司哪里好
  • 泰安网站建设入门推荐wordpress安装数据库端口
  • 深圳网站建设公司 评论网页制作需要会哪些
  • 东莞 网站制作泉州网站建设网站制作
  • 怎么在悉尼做网站wordpress服务器安装教程
  • 聊城集团网站建设加盟河南网站平台建设公司
  • 网站改版升级总结广州建设技术职业学院
  • 网站上打广告深圳品牌手表有哪些
  • 郑州做网站推广电子商务网站建设的一般流程
  • 余姚物流做网站国内优秀的设计网站推荐
  • 自己网站视频直播怎么做二级域名可以做不同的网站吗
  • 项目网站制作模板设计器
  • 网监网站备案网站建站网站 小说
  • 短网址生成在线网站优化方案教程
  • 河南做网站哪个公司好网站推广类型
  • 做质粒图谱的网站做专业课视频课的网站
  • 长沙建立企业网站宿城网站建设
  • 天津建站平台电力建设监理招聘网站
  • 岗贝路网站建设洛可可设计公司贾伟
  • 网站接入地最新新闻头条
  • 可以更改上传到网站的文件内容吗wordpress广告位插件
  • 实名网站审核中心网站制作文案杭州
  • 南京网站设计价格如何看出一个网站有做seo
  • 宣武青岛网站建设网站页脚怎么做
  • 所有搜索引擎蜘蛛不来网站了廊坊关键词排名推广
  • 大连seo网站seo免费诊断电话
  • 百度网站怎么做视频做网站领券收佣金