• cubemx+stm32串口学习汇总资料


    这篇文章是串口中断的文章——STM32基于CubeMX的高速串口收发程序(中断模式)比较有帮助。
    http://www.stmcu.org.cn/module/forum/thread-616613-1-1.html
    看到大家经常写一些关于串口的问题,我也尝试开一个使用串口的工程。
    简单的要求是,USART1和USART2之间互相转发。
    发现使用CubeMX平台,建立测试工程没有难度,情况如下:

    1. 配置管脚,使用BluePill最小板,PC13接有LED:
    MCU是STM32F103C8T6,这个不重要. 不要忘记配置SWD调试接口。

    (看得出,中断里面是收到一个字符发送一个字符。 发送是直接发送,不处理发送中断。)
    大功告成了!! 编译后烧录。

    测试条件,使用两个UART转USB板子(FTDI)和sscom5上位机程序(开两个),发送区都摆放700多个字符,以10ms的间隔连续发送。
    测试结果,速度115200bps和1Mbps,双向同时收发100万字符无差错。 2Mbps,单方向100万字符无差错。
    (高速测试时,需要修改main.c里面的串口速度BaudRate配置。 我没有测试“自动波特率”的模式是否正常。)

    最后,完整的工程见附件。

    此外,http://www.waveshare.net/study/article-644-1.html
    微雪教程也是很不错的学习cubemx的资料。这里讲述了两个实例的手把手过程,空闲中断提供了源码,这个移植到了C8T6中,可以实现单片机接收串口助手发送的消息,然后,发送会串口助手中。
    中断接收的方式也可以按照网页的步骤完成。这个比较简单。如果接收的数据比较频繁,100ms以内发送一次,那比较适合空闲dma接收,如果300mx以上发送一次,则中断接收没问题,stm毕竟是世界级的厂商。可靠性还是可以的。上面例程中以10ms的间隔连续发送,单方向100万字符都无差错。当然系统工程大了还是需要考虑的,否则cpu比较满负荷。
    数据量大的首选空闲+dma方式。

    [原创] STM32基于CubeMX的高速串口收发程序(DMA模式)http://www.stmcu.org.cn/module/forum/thread-619702-1-1.html
    这个文章的说明如下:
    周末有时间,测试了一下STM32F103的DMA串口收发程序,基于CubeMX的,结果却是令人大失所望。

    我在去年,测试了一下【中断模式】的,结果是速度超快。
    速度115200bps和1Mbps,双向同时收发100万字符无差错。 2Mbps,单方向100万字符无差错。
    详情请见:  STM32基于CubeMX的高速串口收发程序(中断模式)

    那时就有网友,问我为什么不用DMA模式,我也认为DMA的好处多多,只是没有时间验证一下。
    现在,我得到的结果是,DMA模式用在UART这种低速外设上面,可能性能并不好,不如中断模式的。
    请网友们给看一看,希望我的代码有问题。
    先说我的测试结果吧:
    STM32F103C8T6 Bluepill板,MCU时钟72MHz,用CubeMX配置出DMA模式的两个串口收发。
    添加少量代码,就做成了两个串口互相收发。 与上面说的中断模式的用法一样。
    结果是,115200波特率,以10ms间隔发送接收40个字符,单方向正常,双方向同时收发就丢失数据。
    如果时间间隔放到200ms,双方向同时收发,也能正常了。

    下面,看看我用的代码:
    CubeMX的配置过程,就不累叙了,附件里面有配置文件。
    上面的代码,也是参考了网上网友的帖子。 希望网友指出问题,和给出更好的代码方案。
    也还听说串口DMA有三种方法,我这里用的只是其中之一的“空闲中断”法。

    附完整代码:


    今天,有做了一些测试。从使用的角度来看,一楼附件的程序是可以使用的,只要,
    1. 数据包长度不超过DMA缓存的长度。2. 发送的间隔不少于200ms。
    就可以115200双向同时收发无差错。

    至于单方向收发,1Mbps,2Mbps,都没有问题的,放心使用。

    cubemx学习tm32可以首选微雪课堂,比较好,翔实,易懂。

    stmcu的帖子有下载的代码,微雪提供了空闲中断的串口代码。

  • 相关阅读:
    spring mvc给参数起别名
    聊聊分布式定时任务中间件架构及其实现--转
    Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
    终端安全工具 gartner 排名
    When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向
    DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
    DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
    DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
    Data Mining and Machine Learning in Cybersecurity PDF
    ES failed to notify ClusterStateListener java.lang.IllegalStateException: environment is not locked
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007424.html
Copyright © 2020-2023  润新知