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

可以做视频的网站营销策略国内外文献综述

可以做视频的网站,营销策略国内外文献综述,做个网站的价格,微网站可以自己做吗title: HAL-DMA中断空闲接受不定长数据 tags: STM32HalCubemax 面对无规律长度的数据帧如何处理? 不定长数据接收可以使用每帧数据发送完成后会有一定的空闲时间"帧的时间间隔?" 如果你想每帧都要可以采用dma加空闲中断的方式空闲中断一次就是一帧数据…

title: HAL-DMA中断空闲接受不定长数据
tags:

  • STM32
  • Hal
  • Cubemax

  面对无规律长度的数据帧如何处理?

  • 不定长数据接收可以使用每帧数据发送完成后会有一定的空闲时间"帧的时间间隔?"
    如果你想每帧都要可以采用dma加空闲中断的方式空闲中断一次就是一帧数据接受完成再去做其它数据解析和其他业务出来不过需要我们注意的是这里面有个小坑

__HAL_UART_CLEAR_IDLEFLAG(&huart1);

我先说下如何处理:
if (__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)== SET)
{uint16_t temp = 0;__HAL_UART_CLEAR_IDLEFLAG(&huart1);HAL_UART_DMAStop(&huart1);temp = huart1.Instance->SR;temp = huart1.Instance->DR;temp = hdma_usart1_rx.Instance->CNDTR;Usart1type.UsartDMARecLen  = USART1_DMA_REC_SIE - temp;HAL_UART_RxCpltCallback(&huart1);
}

  这个函数网上说什么有bug还是啥

  •  temp = huart1.Instance->SR;

  •  temp = huart1.Instance->DR;

  • 还要读一下这两寄存器

    原理很简单就是打开空闲中断函数

    触发中断后dma接收

    接收完后搬到接收数组里面清除dma数组

    做业务逻辑处理 处理完就全部数组清除

    操作步骤如下:

1.开启中断函数

void EnableUsart_IT(void){__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);__HAL_UART_CLEAR_IDLEFLAG(&huart1);HAL_UART_Receive_DMA(&huart1,Usart1type.Usart1DMARecBuffer,USART1_DMA_REC_SIE);}

2.触发中断后dma接收

void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 */if (__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)== SET){uint16_t temp = 0;__HAL_UART_CLEAR_IDLEFLAG(&huart1);HAL_UART_DMAStop(&huart1);temp = huart1.Instance->SR;temp = huart1.Instance->DR;temp = hdma_usart1_rx.Instance->CNDTR;Usart1type.UsartDMARecLen  = USART1_DMA_REC_SIE - temp;HAL_UART_RxCpltCallback(&huart1);}/* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 */HAL_UART_Receive_DMA(&huart1,Usart1type.Usart1DMARecBuffer,USART1_DMA_REC_SIE); //再次打开DMA接收/* USER CODE END USART1_IRQn 1 */}

3.接收完后搬到接收数组里面清除dma数组

/* USER CODE BEGIN 1 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){if (huart->Instance==USART1){memcpy(&Usart1type.Usart1RecBuffer[Usart1type.UsartRecLen],Usart1type.Usart1DMARecBuffer,Usart1type.UsartDMARecLen);Usart1type.UsartRecLen=Usart1type.UsartDMARecLen;memset(Usart1type.Usart1DMARecBuffer,0x00,sizeof(Usart1type.Usart1DMARecBuffer));Usart1type.UsartRecFlag=1;}}

4.业务逻辑处理

我就简单的串口打印测试

/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){if (Usart1type.UsartRecFlag==1 ){​    printf("re:%s,len%d\r\n",Usart1type.Usart1RecBuffer,Usart1type.UsartDMARecLen);​    memset(Usart1type.Usart1RecBuffer,0x00,sizeof(Usart1type.Usart1RecBuffer));​    Usart1type.UsartRecFlag=0;​    Usart1type.UsartRecLen=0;}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}

参考代码:就一积分 给我点

串口空闲中断cubemax任意长度数据资源-CSDN文库

http://www.shuangfujiaoyu.com/news/42772.html

相关文章:

  • 秦皇岛网站制作代理商做网络推广的网站有哪些
  • 腾讯云做网站干什么用山东百搜科技有限公司
  • 成都建网站seo网站优化快速排名软件
  • 企业网站功能报价公司网络推广方法
  • 公司的网站推广费怎么做分录长沙企业网站建设报价
  • 质量好网站建设商家官网首页入口百度
  • 北京大学网站开发的需求分析chatgpt 网站
  • 网站服务器租用多少钱一年合适百度排名点击软件
  • 学网站建设与管理好吗seo网站推广批发
  • 企业开源建站系统大学生网络营销策划书
  • 建设银行网站打不开其他网站可以用吗外链发布平台有哪些
  • 阿里云企业网站怎么收费深圳优化怎么做搜索
  • 做宠物网站还有前景嘛百度竞价怎么做开户需要多少钱
  • 新手学做网站要花钱么百度识图搜索图片来源
  • 成都专业做婚恋网站的网络科技公司衡阳seo
  • 电脑app制作教程重庆二级站seo整站优化排名
  • 做效果图赚钱的网站网络营销项目策划方案
  • 自己做动画的手机软件百度seo营销推广
  • 做爰视频在线观看免费网站有什么平台可以推广信息
  • 安全联盟可信网站认证杭州seo博客有哪些
  • 做营销型网站用什么技术seo北京网站推广
  • 动漫设计学校论述搜索引擎优化的具体措施
  • java php 大型网站开发特色产品推广方案
  • 做a网站互联网营销师证书是国家认可的吗
  • 外贸公司网站建设网络推广培训
  • 宽带专家网站网站优化排名软件网站
  • 网站建设中页面广州外包网络推广公司
  • 湘潭网站建设 沟通磐石网络快速优化网站排名的方法
  • wordpress开发api接口落实20条优化措施
  • 全国建筑行业资质查询平台官网seo搜索引擎优化