当前位置: 首页 > 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.w-s-a.com/news/324814/

相关文章:

  • 学校的二级网站怎么建设深圳企业网站制作设计
  • 自己做qq头像静态的网站网站建设是属于软件开发费吗
  • 举报网站建设做网站之前的工作
  • 用QQ群做网站排名个人网站制作协议
  • 做茶叶网站的素材天津网站营销
  • 网站设计建设流程图微信端的网站开发python
  • 湖州网站seo优化网站改域名备案
  • dedecms怎么制作网站合肥电商网站开发
  • 网站开发通用流程图做flash的网站
  • 营销型网站有哪些平台网站建设藤设计
  • 网站需求分析网站建设美食网站建设多少钱
  • 有专门做网站的吗建德网站
  • 做网站要买服务器吗单页设计思路
  • 一 电子商务网站建设规划网站开发前端框架和后端框架
  • 自助网站建设系统软件自己免费建设网站
  • 百度微建站access如何与网站连接数据库
  • ppt素材免费网站网站正能量晚上免费软件
  • 个人淘宝客网站如何备案搭建一个平台要多少钱
  • nginx 网站建设淘客网站怎么做首页
  • 网站制作的基本步骤是手机网站建设 新闻
  • 水墨 网站源码工装
  • 任丘网站建设服务网站 建设原则
  • 长沙做一个网站要多少钱网站底部备案代码
  • wordpress构建自定义设置页面seo培训学什么
  • 延安有哪些做网站的公司如何建设网站?
  • 网站建设者属于广告经营者吗网站管理程序
  • 网站内容优化方法深圳市宝安区怎么样
  • 视频网站开发视频公司网站制作多少钱
  • 单页简洁手机网站模板购物软件
  • 素材网站官网低价网站建设费用预算