历史上的今天
返回首页

历史上的今天

今天是:2025年07月09日(星期三)

正在发生

2019年07月09日 | STM32_HAL库入门笔记(一) USART配置

2019-07-09 来源:eefocus

串口发送功能:


uint8_t TxData[10]= "01234abcde";

HAL_UART_Transmit(&huart2,TxData,10,0xffff);//把TxData的内容通过uart2发送出去,长度是10,timeout的时间是最大值0xffff


串口接收功能1:

uint8_t value='F';

HAL_UART_Receive(&huart2,(uint8_t *)&value,1,1000);//在这个语句停留1000ms内等待接收1个字节数据,把数据存放在value中


串口接收功能2:

HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1);//程序不会在这个语句停留,直接会按照中断方式把接收数据存放在value中,但是这个语句只能使能一次串口中断。所以要在中断服务函数或者回调函数中重新使能


串口接收功能3:

if(HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1) != HAL_OK){    //这一句写在main函数的while(1)上面。用于启动程序启动一次中断接收

        HAL_UART_Transmit(&huart2, (uint8_t *)&"ERRORrn",7,10);    

        while(1);

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)

{

    HAL_UART_Transmit(&huart2, (uint8_t *)&"rninto HAL_UART_RxCpltCallbackrn",32,0xffff);    //验证进入这个函数了

    HAL_UART_Transmit(&huart2,(uint8_t *)&value,1,0xffff);      //把接收到的数据通过串口发送出去        

    HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1);        //重新打开串口中断

}


串口DMA发送

DMA的TX要这样设置


    uint8_t txData[] = {"HelloWorldrn"};

    HAL_UART_Transmit_DMA(&huart2,txData,sizeof(txData));//可以通过DMA把数据发出去


 DMA接收

if(HAL_UART_Receive_DMA(&huart2, (uint8_t *)rxData, sizeof(rxData)-1) != HAL_OK)//main函数while(1)前,启动一次DMA接收

    {

        Error_Handler();

    }


串口回调函数:


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle){

    

    uint8_t temp[] = {"rnin Callbackrn"};

    HAL_UART_Transmit_DMA(&huart2,temp,sizeof(temp)-1);//可以通过DMA把数据发出去

    

    HAL_UART_Receive_DMA(&huart2, (uint8_t *)rxData, sizeof(rxData)-1);    //重新使能接收    

}


 main函数while(1)中不断输出rxData值


HAL_UART_Transmit_DMA(&huart2,rxData,sizeof(rxData)-1);//可以通过DMA把数据发出去


总结:分轮询方式和中断方式。发送可以使用轮询方式进行,接收建议使用中断方式,如使用轮询方式,会占用系统工作内存过多的现象。

现在需要考虑的地方在于,回调函数放在哪里比较合适。


推荐阅读

史海拾趣

E-Switch公司的发展小趣事

自1979年成立以来,E-Switch公司始终将创新作为发展的核心动力。在公司成立初期,面对激烈的市场竞争,E-Switch决定走差异化路线,专注于开发和生产高品质的开关产品。通过不断的技术创新和产品优化,E-Switch逐渐在电子行业中树立了自己的品牌形象。

AIM公司的发展小趣事

随着公司业务的不断发展和产品线的丰富,AIM开始积极拓展市场,寻求更广阔的发展空间。公司积极参与国际电子展会和交流活动,与全球各地的客户和合作伙伴建立了紧密的合作关系。通过与国际知名企业的合作,AIM的产品和技术得以在全球范围内推广和应用,进一步提升了公司的知名度和影响力。

Comus_International公司的发展小趣事

随着市场的不断变化和客户需求的日益多样化,Comus International并没有满足于现状。公司开始着手新产品的开发,不久便推出了金属汞开关,并最终成功研发了获得专利的无汞开关。这些创新产品不仅进一步巩固了公司在市场上的地位,也拓展了其业务范围,为公司的长远发展注入了新的活力。

承兴(CX)公司的发展小趣事

进入21世纪,承兴公司不满足于现状,开始寻求跨界合作的机会。2000年,承兴成为诺基亚中国区合作伙伴,共同推出了一系列定制化的电子产品。这一合作不仅提升了承兴的品牌影响力,也为其带来了更多的商业机会。随后,承兴还与中国石油、建设银行等大型企业和金融机构建立了合作关系,进一步拓展了其业务范围。

Alpha Semiconductor公司的发展小趣事

Alpha Semiconductor公司于1983年创立,成立之初,公司主要从事代工服务业务。这一策略为Alpha Semiconductor在半导体行业打下了坚实的基础。通过为其他公司提供高质量的代工服务,Alpha Semiconductor逐渐积累了技术实力和行业经验,为后续的自主研发和产品创新奠定了坚实的基础。

EFC [Electronic Film Capacitors, Inc.]公司的发展小趣事

在电子薄膜电容器领域,EFC公司一直以其技术创新而闻名。公司创始人李博士带领着一支由资深工程师组成的研发团队,不断挑战技术极限。某年,他们成功研发出一种新型材料,这种材料不仅大大提高了电容器的性能,还降低了制造成本。这一突破性的创新使EFC公司在市场上脱颖而出,赢得了大量客户的青睐。

问答坊 | AI 解惑

GPS设计全攻略—电子工程师必备手册(上)

PDF目录导航 一、 GPS基础知识二、 GPS应用基础三、 GPS接收机原理图四、 GPS模块五、 手机 - GPS导航方案六、 PDA - GPS导航方案七、 笔记本电脑 - GPS导航方案八、 GPS一体机 - GPS导航方案九、 选择GPS方案所应考虑的几个方面十、 主流GPS方案供 ...…

查看全部问答>

单片机最小系统图

最小系统原理图,与大家分享下,顺便赚点芯币…

查看全部问答>

PIC16F676做的有关采用LIN总线的玻璃升降器

PIC16F676做的有关采用LIN总线的玻璃升降器,里面比较全面的软件和硬件资料。供大家分享。…

查看全部问答>

安防领域,你从事的是哪方面的工作?

纵观市场,感觉大家提及的最多的就是监控了。 那身处安防行业的你们,又是从事什么够工作呢? 行业特点又是怎么样的呢?…

查看全部问答>

无线监控新动向 3G平台如何与安防融合?

无线监控在一些特殊领域中,如偏远山区、水电站等区域,发挥着越来越重要的作用。而3G的兴起,也为无线监控带来新的发展。     随着第三代移动通信技术(3G)商业化应用规模的不断拓展,三大运营商纷纷基于3G高速无线接入的特性,发展多 ...…

查看全部问答>

尊敬的各位师傅们,我是个菜鸟想学习图形开发,但不知道它在计算机中的工作原理,不明白屏幕上显示的字符和图形和显存,内存的关系,希望大家帮帮我!非常感谢!!!最好能

GDI函数和内存显存的关系?GDI函数是运行在内存还是显存? 穿透色和透明区别??? 那裁剪区域可以作用于画布和图层吗? 显存和屏幕缓冲的区别是什么?都是在显卡里吗?还是说显示器上还有缓冲吗? 显存和屏幕缓冲与图层和画布的关系是什 ...…

查看全部问答>

关于2410添加功能按键,中断模式,应用程序,如何添加功能

今天看这个操作,看的我都晕了,InterruptInitialize函数, 我现在有些不懂了,这个是驱动层面的东西,应该。 而本身windows对驱动层面,应用层面分得比较清楚, 我不知道是不是wince也是这样, 我把这段代码 HANDLE   hEvent1; ...…

查看全部问答>

wince下线程控制问题

wince下的线程方法(c#)没有像pc上那么方便的挂起,重启功能,要让线程挂起一段时间在从挂起的地方开始有没有什么好办法呢目前我是采用成员变量来控制的 while (pause){},给定一个循环让他不停转直到外部判断跳出循环,总觉得这样做很不可靠而且c# ...…

查看全部问答>

max264程控滤波器遇到的问题

我的max264滤波器设置如下:采用模式3,外部时钟2M,分频后1M,中心频率10kHz 品质因数:0.5871;在调试时输入的信号却从10Hz到100KHz均可通过,但是输出的波形已经失真,输入波形为正弦波,输出时,在频率比较低时输出的是被削去一点波峰的 ...…

查看全部问答>

一款实用的精密整流电路仿真模型

精密整流电路有很多种,各有优缺点,这一款算是较实用的,在一些产品中可以看到它的踪影。 最近一个产品需要用到,仿真了一下,感觉效果不错,推荐给大家。 原理图: 仿真结果:不愧是精密整流,在30mV输入时,表现还相当不错...   ...…

查看全部问答>