基于V6的CMSIS-Driver串口应用,支持8串口DMA不定长收发,比CubeMX还要省事
说明:1、简单易用,比CubeMX还要方便。
2、可以完美配合RTOS做处理。
3、以串口为例,可以方便的用于DMA不定长收发。
4、CMSIS-Driver是ARM搞的,针对STM32F4系列,已经更新了10几个版本了,相对已经比较稳定。
5、F4系列使用CMSIS-Driver非常方便,支持早期的经典配置方式,而H7系列要麻烦些,强制创建一次CubeMX才可以使用,略坑。
static/image/hrline/4.gif
例程下载:
如果测试不正常,使用新版MDK5.3X及其以上版本,使用后来新做的例子,此贴有附百度云下载。
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114241
注意下面的这几个软件包要都安装当前的最新版:
static/image/hrline/4.gif
CMSIS-Driver框图:
功能配置非常方便,在RTE_Device.h文件里面设置
例子默认配置的最大接收100个字符,连续接收一次数据,重新开启继续接收,简单测试:
非常详细的函数说明,在MDK安装目录里面
CMSIS-Driver里面的文件是开源的吗?有没测试过效率比之前的库文件低了还是高 {:8:} 感觉ARM公司搞这个也是树立了一个标准。对用户只需要用这个驱动的API做事,其余的由厂商完成,方便在不同系列品牌的MCU中自如切换。也许以后换MCU软件只要重新编译一下就行,类似A系列。至于效率可能不是最重要的,毕竟硬件会越来越强。 永恒的_eSg02 发表于 2019-5-15 08:36
CMSIS-Driver里面的文件是开源的吗?有没测试过效率比之前的库文件低了还是高
开源的,效率可以啊,因为中断都是寄存器实现的。 这个程序暂未做AC6的支持,因为有些头文件无法正常识别,后面有时间再研究下吧 测试了下,还不错。 实际上就比cubeMX HAL uart库 多了一个打开IDLE 中断 发了一个事件过去给callback函数,并没有方便很多。。。 wkler 发表于 2019-5-23 19:03
实际上就比cubeMX HAL uart库 多了一个打开IDLE 中断 发了一个事件过去给callback函数,并没有方便很多。。 ...
参数配置比CubeMX方便很多,而且可以完美契合RTOS 本帖最后由 role_2099 于 2019-5-24 14:07 编辑
硬汉大哥,请教一下,你的SecureCRT的是发送的ASCII字符吗,可以发送十六进制吗
https://img.anfulai.cn/dz/attachment/forum/201905/15/031828ftwvy53tan73smvm.gif role_2099 发表于 2019-5-24 12:02
硬汉大哥,请教一下,你的SecureCRT的是发送的ASCII字符吗,可以发送十六进制吗
发不了,这个软件主要还是做超级终端。 eric2013 发表于 2019-5-25 00:45
发不了,这个软件主要还是做超级终端。
收到,多谢硬汉大佬 能设定通讯超时的时间吗?默认是否有延迟? hance2000 发表于 2019-5-29 16:20
能设定通讯超时的时间吗?默认是否有延迟?
OS接收的时候可以设置超时接收。 感谢,回复。主要是不知道是否有延迟,不处理是否会一直来信息。按思路是收到空闲消息,关中断,开延时。延时到放弃接收,切换方向(RS485),处理信息。 hance2000 发表于 2019-5-31 10:48
感谢,回复。主要是不知道是否有延迟,不处理是否会一直来信息。按思路是收到空闲消息,关中断,开延时。延 ...
这类的应用,做个modbus方式的协议控制是最合适的。 现在看不懂,努力学习中。 看了一下,真心好累。。。。看不懂。。。 我一直用这个cmsis-driver,在RTX4下,IIC,SPI,USART,最近在搞以太网,以太网服务器搞了可以收发,通过网络调试助手,最近打算把这个libmodbus协议栈添加到以太网工程中,串口的协议栈已经完美融入到cmsis-driver,自己得花时间,刚注册,希望和大家交流
楼主可否做个基于此的modbus的简单Demo lrzxc 发表于 2020-4-30 18:07
楼主可否做个基于此的modbus的简单Demo
后面会做Modbus升级版教程,可以做。 楼主,例子里,最大接收100字节。第一次发100字节,可以接收,第二次再发就接收不到了。再发小于100字节的也不能接收了。应该如何改才能保证一直可以接收呢?另外想用串口DMA接收方式,接收一个几个KB的bin文件,程序应该怎么写呢?有没有例子参考? highlowbp 发表于 2020-5-12 14:47
楼主,例子里,最大接收100字节。第一次发100字节,可以接收,第二次再发就接收不到了。再发小于100字节的 ...
看了一下,他这个是在DMA接收中断里面又开启了串口的接收中断吗? shibinjie 发表于 2020-6-2 16:45
看了一下,他这个是在DMA接收中断里面又开启了串口的接收中断吗?
如果你要下次用,要再调用API进行接收。 eric2013 发表于 2020-6-2 18:05
如果你要下次用,要再调用API进行接收。
今天仔细看了下,好像DMA都没有设置中断优先级吧。他这个写的太复杂了,不知道整个接收流程是怎么样的,最后是在串口空闲中断里处理的吗? shibinjie 发表于 2020-6-3 13:33
今天仔细看了下,好像DMA都没有设置中断优先级吧。他这个写的太复杂了,不知道整个接收流程是怎么样的, ...
就是开启了串口空闲中断,也开启了接收完成中断,如果用户发送的数据间隔时间触发了串口空闲中断,就会触发进去,在里面终止了DMA传输。 dghwjh 发表于 2019-8-20 17:26
我一直用这个cmsis-driver,在RTX4下,IIC,SPI,USART,最近在搞以太网,以太网服务器搞了可以收发,通过网络 ...
请问你在F1系列上用过CMSIS Driver USART 没有???微18682353162 感谢硬汉,之前用的串口数据处理方式实时性一直不是很高:lol chaqs3 发表于 2020-11-18 09:04
感谢硬汉,之前用的串口数据处理方式实时性一直不是很高
请问你在F1系列上用过CMSIS Driver USART 没有??? 感谢分享,顶起来 chaqs3 发表于 2020-11-18 09:04
感谢硬汉,之前用的串口数据处理方式实时性一直不是很高
用DMA 串口空闲中断方式,处理断续的数据,会出现丢字节的问题。 请教下这个DMA 串口发数据不用RTX5系统调用应该也什么问题把?其他的用RTX5系统调用 jinzhen107 发表于 2021-2-28 11:31
请教下这个DMA 串口发数据不用RTX5系统调用应该也什么问题把?其他的用RTX5系统调用
可以,CMSIS-Driver 是独立的 这个既然是驱动层,应该是F4系列通用的吧?F405 F407之类的应该也都配置修改不大,F1有对应的驱动么? cancundiudiu 发表于 2022-5-24 10:20
这个既然是驱动层,应该是F4系列通用的吧?F405 F407之类的应该也都配置修改不大,F1有对应的驱动么?
对,都有对应的驱动,ST的所有系列都做了对应的CMSIS-Driver wkler 发表于 2019-5-23 19:03
实际上就比cubeMX HAL uart库 多了一个打开IDLE 中断 发了一个事件过去给callback函数,并没有方便很多。。 ...
这个能看到源码吗? 伊森亨特 发表于 2022-7-8 16:28
这个能看到源码吗?
CMSIS-Driver是有源码的,随意商用。 eric2013 发表于 2022-7-8 17:37
CMSIS-Driver是有源码的,随意商用。
这个CMSIS-Driver是在标准库的基础上封装的一层,还是独立与标准库单独的一套呢?谢谢 伊森亨特 发表于 2022-7-11 10:20
这个CMSIS-Driver是在标准库的基础上封装的一层,还是独立与标准库单独的一套呢?谢谢
给F4系列设计的,是独立的寄存器实现。
页:
[1]
2