creat 发表于 2015-1-31 12:58:34

新手STM32F0NUCLEO试用-LED和DSPIN步进控制

本帖最后由 creat 于 2015-2-2 18:46 编辑

   拿到板子一月有余了,刚刚学习STM32几个月,一直用的原子的F1战舰板做项目。所以一直没动F0。前两天看了NUCLEO开发板开发比较汇总,看了CUBEMX的项目生成工具。感觉挺好,下面总结一下个人的使用感受。
DATE 1
一、初步测试
   1.首先是安装了CUBEMX,和安装CUBEFW。这里前面有人提过不多说。只是离线包安装费了一点周折,安装方法见图片。
   2.安装完后就可以新建项目了,我首先做了一个LED的闪烁测试。NUCLEO板上绿色的LED为PA5,所以PA5设置为GPIO_Output,然后在PROJECT中设置工程名和保存路径及生成MDK4.73工程模板,一切OK点击生成。
   3.生成好工程以后打开工程,竟然DEVICE里没有STM32F072RB。原因是MDK版本太老(4.72),于是装MDK5.12,又费了好大功夫才搞定。新版本确实不错。刚装的朋友记得装上STLINK驱动哦。
    4.下面就可以随心所欲的尽情开发了。我的第一个测试为LED闪烁实验。新建了一个HARDWARE项目文件,里面先放着LED.C和LED.H。F0的FW文件的GPIO.C中对GPIO的操作跟以前常用的FW文件不一样了。对GPIO的设置与复位由原来的: GPIO_SetBits(GPIOx,GPIO_Pin)和GPIO_ResetBits(GPIOx,GPIO_Pin),变成了一个函数:HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)。
   5.编译下载,第一个测试完美运行。
总结:
      使用CUBEMX生成工程文件比较方便,再也不用再编写繁琐的硬件初始化函数了,只要使用熟练,3分钟就可以跳过硬件初始化,进入我们的项目设计。在MDK开发的过程中如果要改变某些硬件的设置,可以在回到CUBEMX里进行更改重新生成配置文件,非常方便。

二、步进电机控制

      测试完GPIO就想着做进一步的实验,最近一直在 做有关于步进电机的项目,用的ST的 驱动L6470,该驱动支持指令式的操作,支持128细分,可以很方便的实现位置速度等各种操作。使用SPI发送指令。已在STM32F103的板子上实验过,配合触摸屏操作实现各种复杂的运动。现在打算移植到F0上测试。
      1.首先使用CUBEMX设置STM32F072的硬件配置,在peripherals中使能SPI1为:Full_Dupex Master,使用片选。然后点击Configuraton,设置SPI的参数。点击生成工程文件。
       2.在工程文件中添加DSPIN驱动芯片的驱动文件。
       3.根据SPI函数修改驱动C文件及头文件。
       4.买MAIN 函数里调用驱动函数实现电机控制。
       步进电机的工程文件今天刚刚在弄,主要现在CUBEMX是出现了生成不了PROJECT的问题,目前正在找原因。后续调试好了上传。先上传L6470的驱动文件。
   以上为个人这两天的试用经历,新手一个,希望和大家互相学习!
DATE 2
       板子使用两天后感觉顺手多了,越用越喜欢。之前编译CUBEF0里的例子老是找不到core_cm0.h,MDK的DEVICE安装出错,最后装成了最新版的MDK5.13,使用官方例子是要在OPTIONS里设置一下包含的头文件(core——cm0.h在MDK安装路径中的::\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Include里)。高端大气上档次的感觉。例子里面直接使用了NUCLEO.c的库函数文件,直接很方便的直接对板子的外设及扩展外设进行操作。MDK pack installer里有NUCLEO板子例程的链接:http://www.keil.com/boards2/st/nucleo_f072rb/。而我要进行的项目需要的SPI,和2.8寸LCD,及按键都有相应的例子。项目开发可以把精力都花在自己的功能函数里。估计明后天就可以把我在F1里开发的项目转移到F0里,如果可行成本可以省去一些吧。      CUBE_FW_F0_1.2版SPI_FullDuplex模式测试。打开文件的MDK工程,官方例子对SPI初始化和配置的函数看着比较复杂详细,附带了很多错误检测函数。要使用SPI例子做实验,一定要在main.h文件里定义一下主从机:#define MASTER_BOARDOR#define SLAVE_BOARD。例子可以实现两块板子的SPI传输,主机发送缓存区数据给从机,从机把发送来的数据传回给主机,主机逐个字节检测数据是否相符,不相符则绿色LED的间隔一秒闪烁。




feel-376797 发表于 2015-1-31 13:00:22

谢谢分享

creat 发表于 2015-1-31 14:31:50

feel-376797 发表于 2015-1-31 13:00
谢谢分享

谢谢支持,谢谢鼓励!

creat 发表于 2015-1-31 14:40:31

本帖最后由 creat 于 2015-1-31 15:15 编辑

找到CUBEMX生成不了PROJECT的问题了,原因是不知道怎么回事安装的CUBEF0_FW1.21没了。可能是加载的离线包移走了的问题吧,还有生成的工程路径不能包含中文。

icerol 发表于 2015-11-5 14:04:04

请问一下楼主,ST规格书中关于最高速度 step/s = Max_Speed*2^-18/tick这个怎么理解,我设置一个非常低的速度,那个Max_Speed的值都非常大。22位的寄存器根本装不下。能帮忙解释一下吗?

iamlcy 发表于 2015-11-6 09:57:09

谢谢分享

aabird 发表于 2015-11-6 13:54:57

这个总结的挺丰富呀。没想到呀

Jeek青 发表于 2015-11-6 15:44:28

我也有一块F030,还在吃灰。;P

anobodykey 发表于 2016-6-7 13:42:47

楼主,咨询个事,L6470文档中提到一个从Step/s到step/tick的转换其中tick为250ns,这个tick是固定的250ns吗?跟时钟不相关吗?

Chen851 发表于 2016-7-11 20:03:25

anobodykey 发表于 2016-6-7 13:42
楼主,咨询个事,L6470文档中提到一个从Step/s到step/tick的转换其中tick为250ns,这个tick是固定的250ns吗 ...

你也在用这个IC吗?
我这几天再调L6480。加速过程好长,要好几圈才能达到指定速度,不知道什么问题
可以一起讨论
页: [1] 2
查看完整版本: 新手STM32F0NUCLEO试用-LED和DSPIN步进控制