社区导航

 
查看: 4658|回复: 3

[原创] 【Nucleo深度评测】借助STM32CubeMX 快速完成代码开发

[复制链接]

35

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-12-17 22:15:12 | 显示全部楼层 |阅读模式
本帖最后由 abend 于 2014-12-17 22:33 编辑

首先谈谈体会:
本人没有任何硬件或者MCU开发的经验,只是一个纯软件工程师,对于什么时钟,上拉下拉一窍不通。但是借助STM32CubeMX,这次只用了半天,就基本完成了自己所需要的功能的程序主体框架开发。STM32CubeMX和HAL库确实带来了强大的生产力。

目标需求:
一个类似串口数据监控和过滤的硬件功能模块,有点sniffer的意味。即在原有的串口传输路径中插入这个硬件模块,这个硬件模块应该能接入串口数据,然后处理串口数据(比如存储传入的数据、CRC校验),最后将数据通过串口再发送出去。

所以硬件板的最基本框架就是
硬件上:
2个COM口:COM A; COM B
软件上:
COM A接收数据 再次发送给COM B;
COM B接受数据 再次发送给COM A

操作全过程:
1 安装STM32CubeMX
2 安装对应STM32CubeL0 Firmware Package到STM32CubeMX
这两点已经有多位网友发帖讲解过了,我就不重复了。

3 用STM32CubeMX 创建项目,生成MDK开发的基础项目代码:

a 配置外设(针脚)
这里主要定义了USART1、 USART2、 SPI
定义SPI 是为了未来配合BlueNRG用。 USART1的缺省定义是PA9 PA10, PA9是对应Nucelo板上的CN5-1, PA10对应CN9-7。而BlueNRG要用到CN5-1脚,所以,将UART1调整到PB6 PB7。STM32CubeMX的按住Ctrl键点击针脚自动给出备用GPIO脚的功能真是神器啊,一开始没有发现,还傻乎乎的去查Data Sheet里面的Alternate function port表,这个轻松一按,立刻搞定。                                                                                                                                                                                                        
                        
               
        
mx PIN.jpg

b 配置USART 参数
mx USART.jpg
c 配置中断NVIC
准备采用中断方式操作串口,所以进行配置
mx NVIC.jpg
d 指定生成MDK开发工具对应的项目代码
mx MDK.jpg
4 用Keil uVision5(俺是新人,还是不理解为何MDK要改这么个新名字)打开生成的项目代码 简单增加处理逻辑代码
CubeMX已经把基础代码为我们准备好,主要在USART.c中
串口时钟、GPIO pin脚定义,中断NVIC代码:
mx USART parm code.jpg

串口工作模式代码:
mx USART pin nvic code.jpg


而我自己的新增的业务逻辑,只涉及修改两个文件:
stm32l0xx_it.c -- USART1_IRQHandler USART2_IRQHandler 增加处理逻辑
main.c -- 增加控制逻辑
调用了HAL库函数中的两个方法:
HAL_UART_Receive_IT -- 中断方式从串口接受数据
HAL_UART_Transmit -- 发送数据到串口

5 测试
再次体会到Nucleo板子的好处,USART2直接被STLink模块弄成了USB虚拟串口,只需要一个USB-TTL板接上USART1(就用了三根杜邦线连接了RX TX GND),这样两个串口都能通过USB接入电脑(我笔记本USB口不多,所以用了一个USB Hub),然后在电脑中操作读写。
IMG_3909.JPG

USART1(USB-TTL板)在XP设备中被登记成了COM5, USART2(STLink)被登记成了COM7
mx COMport.jpg

用串口助手自动向两个串口发送数据,可以看到结果窗口中,每个串口都接收到了发给对方串口的数据。
mx 运行结果.jpg

横着摆好像好看一点:
mx result2.jpg
6 后续工作
现在完成的只是简单的转发,后续在main.c的主控制逻辑中,可以添加诸如数据过滤,数据CRC校验,数据记录存储(不知道自己能否搞定spi驱动SD卡)。另外准备结合这次活动送的BlueNRG板子,将截获的串口通讯数据通过蓝牙发送出来,通过手机端app接收观察串口通讯数据,这也是一开始预留SPI相关GPIO pin脚的原因。






评分

2

查看全部评分


回复

使用道具 举报

1555

TA的帖子

19

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2014-12-18 09:16:02 | 显示全部楼层
谢谢分享  很详细


回复 支持 反对

使用道具 举报

823

TA的帖子

6

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2014-12-18 18:30:57 | 显示全部楼层

用这个软件还是比较容易的;

回复 支持 反对

使用道具 举报

645

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

发表于 2014-12-19 00:41:30 | 显示全部楼层
软件做的都是不错,
是主流,用起来也很方便!
就是这个名字,越看越“苦逼”!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-3-25 03:49 , Processed in 0.274402 second(s), 17 queries , Redis On.

快速回复 返回顶部 返回列表
关闭