社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 5755|回复: 5

[原创] 【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脚的原因。






此帖出自stm32/stm8论坛

评分

2

查看全部评分



回复

使用道具 举报

2684

TA的帖子

19

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

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



回复

使用道具 举报

820

TA的帖子

6

TA的资源

纯净的硅(初级)

Rank: 4

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

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


回复

使用道具 举报

868

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

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


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-4-18 23:50:50 | 显示全部楼层
谢谢楼主的分享!好详细!


回复

使用道具 举报

79

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-4-19 02:32:40 | 显示全部楼层
试过,初始化设置比较简明,可是,如果你要用以前的库函数操作时,发现,名称都变了;感觉不适应,又改回去了;


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

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

GMT+8, 2017-12-19 06:11 , Processed in 0.295694 second(s), 18 queries , Redis On.

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