历史上的今天
返回首页

历史上的今天

今天是:2025年04月17日(星期四)

正在发生

2020年04月17日 | STM32 CUBEMX UART+DMA

2020-04-17 来源:eefocus

参考

https://blog.csdn.net/xukao5671927/article/details/78605022

http://www.51hei.com/bbs/dpj-39885-1.html

官方参考手册


小发现:

USART1_IRQHandler中的


void USART1_IRQHandler(void)

{

  /* USER CODE BEGIN USART1_IRQn 0 */

    uint32_t tmp_flag = 0;

    uint32_t temp;

  /* USER CODE END USART1_IRQn 0 */    

  HAL_UART_IRQHandler(&huart1);

  /* USER CODE BEGIN USART1_IRQn 1 */

    tmp_flag =  __HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE);

    if((tmp_flag != RESET)){


        __HAL_UART_CLEAR_IDLEFLAG(&huart1);


        /* 读取串口状态寄存器(芯片型号不同,寄存器名称可能需要修改) */

        temp = huart1.Instance->SR;

        /* 读取串口数据寄存器(芯片型号不同,寄存器名称可能需要修改) */

        temp = huart1.Instance->DR;

        HAL_UART_DMAStop(&huart1);

        /* 读取DMA剩余传输数量(芯片型号不同,寄存器名称可能需要修改) */

        temp  = hdma_usart1_rx.Instance->NDTR;

        rx_len =  BUFFER_SIZE - temp;

        recv_end_flag = 1;

    }

  /* USER CODE END USART1_IRQn 1 */

}


__HAL_UART_CLEAR_IDLEFLAG(&huart1);是这样一个宏函数


     #define __HAL_UART_CLEAR_PEFLAG(__HANDLE__)     

         do{                                           

        __IO uint32_t tmpreg = 0x00U;               

    tmpreg = (__HANDLE__)->Instance->SR;       

    tmpreg = (__HANDLE__)->Instance->DR;       

    UNUSED(tmpreg);                             

    } while(0U)



/* 读取串口状态寄存器(芯片型号不同,寄存器名称可能需要修改) */

temp = huart1.Instance->SR;

/* 读取串口数据寄存器(芯片型号不同,寄存器名称可能需要修改) */

temp = huart1.Instance->DR;


功能相同,故将函数注释掉。重新烧录,程序正常运行

推荐阅读

史海拾趣

Horn公司的发展小趣事

面对电子行业日益复杂的加工需求和激烈的市场竞争,Horn公司不断进行自我调整和转型。公司加大了对自动化生产线的投入,提高了生产效率和产品质量。同时,Horn公司还加强了与下游客户的沟通与合作,深入了解市场需求变化,为客户提供更加个性化的解决方案。这些举措帮助Horn公司在电子行业中保持了竞争优势。

DIALIGHT公司的发展小趣事

随着业务的不断发展和市场的不断扩大,DIALIGHT公司逐渐实现了全球化布局。他们在美国、英国、丹麦、德国、马来西亚、新加坡、澳大利亚、墨西哥和巴西等地设立了分支机构或办事处,为全球客户提供及时、高效的服务。此外,DIALIGHT还积极寻求与其他企业的合作与共赢,通过战略合作协议的签署,为双方带来新的业务机遇和合作空间。这些举措不仅增强了DIALIGHT的市场竞争力,也为其未来的发展奠定了坚实的基础。

请注意,由于篇幅限制,以上三个故事仅为DIALIGHT公司发展历程的简要概述。如需更详细的信息和更多故事,建议查阅相关资料或访问公司官网。

ABL Aluminum Components公司的发展小趣事

为了进一步提升竞争力,ABL公司开始实施国际化发展战略。公司首先在海外市场设立了销售分支机构,积极开拓国际市场。随后,ABL公司又在海外建立了生产基地,利用当地资源和优势降低生产成本。通过国际化发展,ABL公司不仅扩大了市场份额,还提高了品牌的国际影响力。

Crydom公司的发展小趣事

为了进一步提升竞争力,ABL公司开始实施国际化发展战略。公司首先在海外市场设立了销售分支机构,积极开拓国际市场。随后,ABL公司又在海外建立了生产基地,利用当地资源和优势降低生产成本。通过国际化发展,ABL公司不仅扩大了市场份额,还提高了品牌的国际影响力。

General Instrument Optoelectronics公司的发展小趣事
检查电源电路是否正常,电源是否稳定。
Hisetec Electronic Co Ltd公司的发展小趣事

背景:在21世纪初,电子产品市场迅速增长,智能手机和平板电脑等移动设备成为新宠。Hisetec Electronic Co Ltd公司凭借其在微电子封装技术的深厚积累,成功研发出一种高密度、低功耗的封装解决方案,大幅提升了手机芯片的能效比。

发展:该技术迅速被市场认可,多家知名手机制造商如三星、苹果等纷纷采用,Hisetec公司因此订单激增,市场份额大幅提升。公司不仅扩大了生产规模,还进一步加大了研发投入,不断推出新的封装技术,巩固了其在电子封装领域的领先地位。

问答坊 | AI 解惑

德州仪器TMS320DM6467介绍

Datasheet下载: 功能框图: DM6467实现了在各种视频终端产品间的无缝内容传输。它集成了ARM926EJ-S内核与600MHz C64x+ DSP内核,并采用高清视频/影像协处理器(HD-VICP)、视频数据转换引擎以及目标视频端口接口。在执行高达H.264 HP@ L4(10 ...…

查看全部问答>

Linux下烧写镜像

小弟刚刚接触ARM,跟着开发板的说明移植内核,发现自己的Linux系统下不会烧写镜像,可以说是啥也不会,望有经验的同志告之 PS:小弟用惯了Linux,不想回到Windows下去,望能有详细的方法(小白一个)…

查看全部问答>

S3C2440硬件定时器

我想用用定时器输出微秒级的控制(mirco2440的板子),控制普通GPIO口输出高低电平(PWM被占用),整体思路是什么样的(驱动,应用程序调用)。。求助…

查看全部问答>

求WINCE5.0下JAVA语言的开发软件~~

RT 求 用JAVA语言的做WINCE5.0下应用程序 的软件 感激不尽~~ …

查看全部问答>

WINCE5.0 显示和ImageViewer问题

接触WINCE5.0不久,不知道怎么办. WINCE 原来的缺省显示支持240*320的LCD,而我们用的LCD是320*240.在PB中把WINCE5.0自带的ImageViewer软件加入过来,发现很多地方,打开该应用程序菜单项窗口以后,有些窗口显示框超出了我的LCD.由于看不到WINCE源代码, ...…

查看全部问答>

AN016 — 电源管理技术及功耗计算.pdf

本帖最后由 dontium 于 2015-1-23 13:22 编辑 C8051 …

查看全部问答>

430两路捕获计时问题

我用P1.2,1.3口捕获两个输入方波信号,均上升沿促发。两个捕获计数值差值得出时间差。但是计数差值很不稳定。。一段时间较为正常,一千多。一段时间突然保持在-几万。求助 #include   long int cap1=0; long int cap2=0; long int ca ...…

查看全部问答>

FatFs应用总结

多年来一直在使用FatFs开发各种项目(特别感谢FatFs作者的奉献),但都是或多或少的应用,并没有全面的应用到FatFs的所有功能。最近一个项目需要操作大量的文件,终于进入FstFs应用的全面期,也遇到了不少问题,现将逐步总结这些应用中遇到的各种问 ...…

查看全部问答>

西门子电路板元件怎样拆除

我想问一下,有谁知道西门子电路板(工业用的)的直插电子元器件怎样拆除,它的耐温怎么那么高,我把烙铁温度调到300度,那焊锡还是不化?…

查看全部问答>

【转】Altera SoC的Linux内核编译方法

本帖最后由 chenzhufly 于 2015-1-19 15:54 编辑 SoC的Linux内核编译方法 这里介绍如何编译SD Card的image。这里并没有太多的原理需要讲述,但是大多数刚刚接触到linux 嵌入式的朋友还是需要花些时间找编译方法。这里提供了为SoCFPGA编译内核 ...…

查看全部问答>