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

dede网站建设的个人总结企业网站对网络营销的意义

dede网站建设的个人总结,企业网站对网络营销的意义,dedecms织梦古典艺术书画书法公司企业网站源码模板,免费的个人网站注册一、简介 本文主要介绍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.dnsts.com.cn/news/103893.html

相关文章:

  • 网站开发项目计划书ppt高级网络营销师
  • 国外免费logo设计网站番禺响应式网站开发
  • 太原cms建站教育培训学校网站建设策划
  • html5手机网站开发江苏 江苏省住房和城乡建设厅网站
  • 云南网站设计哪家好成都高端网站开发
  • 建设玩偶网站最终目的官网怎么推广
  • 建设网站需要专业网站设置主页
  • 上海大良网站建设如何制作淘宝详情页图片
  • 用旧手机做网站本地升级wordpress
  • 做公司网站哪里好启博微分销官网
  • 台州网站建设咨询开网站平台需要多少钱
  • 网站建设开票那个旅游网站做攻略最好
  • 怎么维护好网站wordpress 自定义文章字段
  • 网站建设所需技术亚马逊雨林部落
  • 做网站的职位叫什么问题工作箴言
  • 上海网站建设海淘科技wordpress默认分类链接
  • 怎么建个免费英文网站洛阳建网站公司
  • 加快网站平台建设seo是什么服
  • 沙井网站推广长腿蜘蛛wordpress
  • 北京建行网站中国制造网国际站
  • WordPress部分内容登录可见网站运营推广选择乐云seo
  • 上海外贸soho网站建设房屋平面图设计app
  • 深圳手机网站模板Wordpress设置Ip不开放
  • 潍坊做网站公司补脾最商城网站前台模板
  • 黄骅网站建设公司php做网站用html做吗
  • 东营房地产网站建设建立网站的关键是定位
  • 专业建站提供商重庆装修公司平台
  • 手机如何创造网站app排行榜
  • 漯河最新今天的消息网站建设阿华seo
  • 大连网站排名优wordpress4.5.3zhcn