这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32 L053使用感受

共2条 1/1 1 跳转至

STM32 L053使用感受

菜鸟
2015-11-16 21:33:15     打赏
收到板子有一段时间了,今天来说说我的使用感受
优点:
  • Nucleo板得到了Keil MDK-ARM V5.0版本的开发软件全方面的完善支持:
       Device列表中可直接找到,自动列出对应需要安装的Pack;
       MDK-ARM自带对应的示例程序;
      MDK-ARM自带对应的参考文档,方便查找
  • Nucleo板带的STLINK虚拟出串口,有预留STLINK的接口,还可以用来调试别的STM32开发板!
  • 用一条mini usb的数据线,可以方便的完成调试和开发。
  • 尺寸小巧,不占地。
  • 有Arduino标准接口,方便使用Arduino的扩展板。
吐槽:
  • mini usb接口;
  • 需要上电烙铁才能更改的SBxx设置点;
总结:非常适合0基础的初学者上手。

前一节,讲了KEIL MDK环境的搭建,这里恕不赘述,在Pack Installer里面安装必要的Pack时,立刻能够体会到使用ST官方开发板的好处。Keil的这个开发工具对ST的这块板支持是真完善啊--不管是通 过Devices查找STM32L053,或者通过Boards查找Nucleo都能直接找到,软件自动给列出需要安装的Packs, 更适合我这个菜鸟的是,在Examples中,直接就有2个适合这块nucleo开发板运行的示例程序。

凭着以前玩STC单片机的经验,Keil的这个开发工具我用起来没有什么陌生感,直接把那个Blinky程序研究了一下。 

Blinky.c 这里面有个main()函数,主要就是在一个循环里,不停的控制LED灯闪烁,另外有一个printf 打印Hello World.
while(1) {                                    /* Loop forever               */
  
      LED_On (num);
      Delay(10);                                /* Delay 100ms                */
      LED_Off(num);

    printf ("Hello World\n\r”);

Retarget.c 按我的理解就是把c标准库中printf函数的实现所调用的核心的fputc fgetc等函数重载了,使的本来是向标准输入输出设备操作的函数变成了串口读写操作。

Serial.c就是封装了串口的操作函数。

后面还有个startup_stm32l053xx.s ,ST官方的程序注释的真详细啊。直接读注释就知道,
这个startup_stm32l053xx.s调用了system_stm32l0xx.c 做初始化,然后调用Blinky.c中main函数。也就是先boot起板子上的设备,然后跑应用程序。

;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
;* File Name          : startup_stm32l053xx.s
;* Author             : MCD Application Team
;* Date               : 15-April-2014
;* Description        : STM32l053xx Devices vector table for MDK-ARM toolchain.
;*                      This module performs:
;*                      - Set the initial SP
;*                      - Set the initial PC == Reset_Handler
;*                      - Set the vector table entries with the exceptions ISR address
;*                      - Branches to __main in the C library (which eventually
;*                        calls main()).

;******************************************************************************

  * @file    system_stm32l0xx.c
  * @author  MCD Application Team
  * @version V1.0.0RC1
  * @date    15-April-2014
  * @brief   CMSIS Cortex-M0+ Device Peripheral Access Layer System Source File.
  *
  *   This file provides two functions and one global variable to be called from 
  *   user application:
  *      - SystemInit(): This function is called at startup just after reset and 
  *                      before branch to main program. This call is made inside
  *                      the "startup_stm32l0xx.s" file.


好了还是回归正题说这个开发板,今天下午连上电脑,突然发现,坑爹啊,居然是mini usb接口,而不是如今Android手机都使用的micro usb接口!对于一块在2014年出来的板子,使用mini usb接口,实在让我觉得有点不理解。从抽屉里面翻出一根mini usb的线,乖乖,头子上都有锈迹了。
连上板子和电脑,安装驱动,会不止添加一个设备,最后还添加了一个虚拟串口,因为安装界面一闪而过,这个当时没有特别注意。

然后我就在keil 这个集成开发环境里面,打开Blinky这个工程,然后编译,download程序到板子。一路pass,官方的东西合作的亲密无间啊,看的到的是板上的led闪闪,可是那个“hello world”去哪儿了。

读程序Serial.c,里面有一句注释,太贴心了:
void SER_Initialize (void) {
  /* Configure PA3 to USART2_RX, PA2 to USART2_TX */

串口的RX是PA3, 串口的TX是PA2。虽然本人是个软件工程师,可是串口没少用过,232的2、3、 5脚还是熟悉的。另外以本人刷路由器,刷卫星接收机的经验,TTL电平也是略懂的。于是我抄出TTL 转USB虚拟串口的小板,然后就准备拿杜邦线往nucleo开发板的PA2、 PA3上接。

哪里是PA2 、PA3呢?这个时候又发现Keil的这个MDK跟ST的这块板子有多亲了,在Books里面,直接就列出了Board Data Books, 鼠标一点,书就到眼前来。

其中5.8节
The USART2 interface available on PA2 and PA3 of the STM32 microcontroller can be connected to ST-LINK MCU, STMicroelectronics Morpho connector or to Arduino connector. The choice can be changed by setting the related solder bridges. By default the USART2 communication between the target MCU and ST-LINK MCU is enabled in order to support Virtual Com Port for mbed (SB13 and SB14 ON, SB62 and SB63 OFF).

大致就是,这块nucleo 板子上有两块MCU, 一块就核心干活的 STM32L053R8, 另外有一块ST-LINK,我猜这后面一块负责了用usb连接下载调试通讯什么的,关键是后面这块MCU连接上了核心MCU的PA2、PA3脚,并把这两个脚的数据虚拟成了一个串口!


(这里又发现一个坑爹的事情,如果不希望PA2、PA3 被STLINK接管,而是通过板上的接线端子连接访问,需要自己焊接处理板子反面的SB开头的那几个电阻(0欧姆?),这对只会敲键盘,不会烧电烙铁的我可不是个容易的事情)

于是在自己的电脑上,硬件管理器里面一看,果然有安装的时候没有太注意的那个STLink虚拟串口,记下串口号码com7, 打开串口调试软件,设置成com7, 结果期待的”hello world"还是没有出现。再看程序,原来波特率是115200,串口调试软件里面默认打开是9600. 修改以后,熟悉的“hello world”一行行的刷出来了。


  
USARTx->BRR  = __USART_BRR(32000000ul, 115200ul);  /* 115200 baud @ 32MHz   */

从一个软件工程师的角度,这个例子程序是非常有参考借鉴意义的,因为可以通过printf将中间结果打印当做调试输出,而这块nucleo开发板直接就能够把调试结果通过虚拟串口输出,不需要用户额外的自己接TTL转USB等。

更复杂的应用搞起……

我想我不多说什么……大家都知道我要做什么了……哈哈哈哈





关键词: MDK5.10     STM32     开发    

菜鸟
2015-11-18 20:26:14     打赏
2楼

小车组装完成……苦苦调试程序吧


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]