打印
[开发工具]

STM32CubeMX生成代码试用体会

[复制链接]
29354|67
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Marco-Marco|  楼主 | 2014-9-17 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        前天参加ST深圳研讨会,收获不大,就听了CubeMX感觉有点意思,回来试用了下。我用的是STM32F072B-DISCOVERY. Cube最新版本是4.3.1.增加了最新的L0,F042等新器件,和一些Nucleo板和Discovery板。可直接导入。
        程序实现功能:将接收到的数据发送出去。测试结果如图


        首先,打开STM32CubeMX,打开串口1。


  然后Project -->Generate Code , 有两个页面选项

可以生成如上3种工程,我一般用keil .


以上页面中红框1表示每个外设单独生成一个.c和.h文件,这样层次更明确。红框2中表示把其余不用的pin脚都设置为模拟输入以降低功耗,也选上。

生成工程后会自动生成4个文件夹,如图。其中Drivers就是硬件抽象层,类似于以前的库,都以“hal”结尾。inc和src分别是生成的头文件和包含文件。Projects是工程快捷方式。


以下是使用以前的库需要做的工作,判断是否接收完毕,发送接收到的数据,等待发送完毕。


这是用新的CubeMX生成的工程需要添加的函数,串口接收直接使用HAL_UART_Receive( ) , 发送直接用HAL_UART_Transmit( ) .也不需要再加判断接收/发送状态。都包在了函数里面。修改响应的参数即可。但首次使用难免会不熟,我也是看了HAL里面的UART例程函数才知道可以调用这两个函数的,再看看原型,基本就懂了。



总体来说,硬件抽象层的这些函数,宏定义比起以前的库文件还是有很多的不同。但总体里说感觉还是会减少一些工作量。后面有工程时会具体再试一下。


沙发
Marco-Marco|  楼主 | 2014-9-17 17:50 | 只看该作者
附件是生成的072的keil工程,除了上图的红框,其余都是系统自动生成的。

Cube_MX_STM32F072_UART1.rar

2.43 MB

使用特权

评论回复
板凳
mmuuss586| | 2014-9-17 18:50 | 只看该作者

不错,谢谢分享;

使用特权

评论回复
地板
Adu0227| | 2014-9-17 22:25 | 只看该作者
作为一些参考,还是很不错的

使用特权

评论回复
5
xuan309170083| | 2014-9-18 00:11 | 只看该作者
不错

使用特权

评论回复
6
xuan309170083| | 2014-9-18 00:15 | 只看该作者
Cube是直接操作寄存器,绕过了库函数这一层

使用特权

评论回复
7
honami520| | 2014-9-18 12:45 | 只看该作者
多谢楼主分享。这个工具估计快要可以用了

使用特权

评论回复
8
bear1| | 2014-9-18 13:38 | 只看该作者
HAL_UART_Receive
这里的“HAL”是什么意思?全称

使用特权

评论回复
9
bear1| | 2014-9-18 13:39 | 只看该作者
STM32F103系列支持吗?楼主

使用特权

评论回复
10
Marco-Marco|  楼主 | 2014-9-18 13:52 | 只看该作者
bear1 发表于 2014-9-18 13:38
HAL_UART_Receive
这里的“HAL”是什么意思?全称

HAL--Hardware Abstraction Layer(硬件抽象层)。目前还不支持F1和L1。其余全部已经支持。下一步会慢慢完善

使用特权

评论回复
11
bear1| | 2014-9-18 13:54 | 只看该作者
Marco-Marco 发表于 2014-9-18 13:52
HAL--Hardware Abstraction Layer(硬件抽象层)。目前还不支持F1和L1。其余全部已经支持。下一步会慢慢完 ...

何时能支持F1? 有具体时间表吗?

使用特权

评论回复
12
nj21ic| | 2014-9-18 15:09 | 只看该作者
F1的体系结构 实在是太乱了·虽然功能强大,绝对不是一个标准的cpu,是个拼凑的修修补补出来的东西,漏洞百出。因此想自动生成,实在不容易。估计一辈子看不到了!!
但是 F1确实功能强大,无与伦比!

使用特权

评论回复
13
icecut| | 2014-9-18 15:55 | 只看该作者
f1不支持估计是因为市场问题。被流氓盯上了。哈哈

使用特权

评论回复
14
Marco-Marco|  楼主 | 2014-9-18 16:23 | 只看该作者
刚又试了下。串口9600,19200没有问题,往上到38400以上就有问题,会丢码。

使用特权

评论回复
15
Marco-Marco|  楼主 | 2014-9-18 16:24 | 只看该作者
icecut 发表于 2014-9-18 15:55
f1不支持估计是因为市场问题。被流氓盯上了。哈哈

楼上是指 ?D 吗,呵呵。

使用特权

评论回复
16
Marco-Marco|  楼主 | 2014-9-18 16:36 | 只看该作者
Marco-Marco 发表于 2014-9-18 16:23
刚又试了下。串口9600,19200没有问题,往上到38400以上就有问题,会丢码。

好吧,我错了,串口时钟搞忘配了,之前默认是8MHZ,低速传输时自然没问题,等波特率设高之后自然不行了。已改为48MHZ,实测串口波特率115200收发一切正常。

使用特权

评论回复
17
zzu1986| | 2014-9-18 17:15 | 只看该作者
mark下 后续交流

使用特权

评论回复
18
feiante| | 2014-9-18 17:32 | 只看该作者
bear1 发表于 2014-9-18 13:39
STM32F103系列支持吗?楼主

好像还不支持F1

使用特权

评论回复
19
香水城| | 2014-9-18 17:46 | 只看该作者
icecut 发表于 2014-9-18 15:55
f1不支持估计是因为市场问题。被流氓盯上了。哈哈

其他不谈,F1不久之后就可以和大家见面了。:D

使用特权

评论回复
20
香水城| | 2014-9-18 17:49 | 只看该作者
鼓励LZ的劍及履及,并且感谢LZ的经验和感想分享。

深圳roadshow,你有抽到奖么?:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:www.jhe-iot.com

32

主题

155

帖子

2

粉丝