查看: 330|回复: 1
打印 上一主题 下一主题

【STM32L476 Nucleo】+建立自己的组合导航系统01+玩板初体验

[复制链接] qrcode

24

主题

30

帖子

87

积分

注册会员

Rank: 2

积分
87
楼主
跳转到指定楼层
发表于 2016-5-9 08:25 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  首先感谢论坛给我这个机会让我试用这块开发板,在本次测评活动的一系列帖子中,我将会介绍一个基于STM32L476版本的组合导航系统。本撸主这个专业毕业,对相关算法还算了解,所以也只能做这个了,你要是让我做别的操作系统啥的让撸主听起来云里雾里的东西,撸主也做不来啊。所以呢,撸主本人刚出茅庐,道行浅薄,说的不对的地方还望各位指正。

一 、我与NUCLEO的相遇  

    撸主本来是做算法的,算法哎,可是呢到公司以后,Boss却给了撸主一个调试遥控器的工作,幸好撸主本来也学习过51,STM32F1,所以就准备拾起以前的在大海边遗落的知识碎片。可是撸主不甘心啊,撸主想做算法,所以撸主准备买块树莓派,谁让它的多媒体处理能力就相对于狗板(BBB)见长呢。准备搞一个IMU +VISION的小玩意。偶然间在论坛就看到了这块NUCLEO板子的活动,NUCLEO的发音很像美剧硅谷里Holli公司的压缩团队的名字,关键是它的低功耗很对撸主的胃口,撸主就申请了,没想到竟然通过了,撸主顿时压力倍增,加班狗还要挤出时间做测评啊,就赶紧上网买了MPU9250以及其他的一些辅助元件(撸主毕业时候把东西都送师弟了),在漫长的等待中终于等来了这块板子,一打开傻眼了,啥都没有,就一块板子,好孤单啊。撸主仔细查看里面的小卡片,还需要找一根USB线满足供电和通信以及下载调试的要求,这线好难找啊,我在想为啥不搞成安卓手机充电线的接口呢。爆照开光。


    还有本次项目所需要的工具元件,包括GPS(UBLOX LEO 6M)IMU(MPU9250),还有可能用到的数传NRF模块(当年一直舍不得扔掉)一起来个大合影吧!


二.一波三折的开发环境搭建

    硬件有了,开发环境也得走起来啊,首先呢,撸主使用的是Keil-MDK 5.x的版本,使用IAR的小伙伴不要打我啊,不只因为撸主熟悉它的开发环境,还因为它的Package Install,需要的库就可以安装,不需要的就拜拜了。但就是因为这个问题,让撸主浪费了一天的时间。STM32L4的DFP下载不下来啊,撸主直接去Keil的官网下载还是这个问题。撸主决定先搞其他的,于是现在ST的官网找到NUCLEO板所在的页面,下载了相应的驱动安装好了,如下图所示。

    据撸主查阅资料后,发现ST家有个叫Cube的东东,撸主本着试试看的态度,下载安装,哎呀界面一下子让撸主惊讶了,图形化编程哎,想起撸主在大学的时候,曾经研究过MATLAB的代码生成模式,但因为质量不高,效率不高,便没有继续研究,想不到可以在ST家的软件上面实现,想想还有些小激动呢。魔方魔方STM32CubeMX撸代码也要与时俱进,ST提供了这么个新工具,咱们也要去学习,争取早日达到代码黑段的水平。

    直接在Cube里面找到NUCLEO,方便的很。

    点击Nucleo64后

    你会看到左边会有些三角感叹号,把鼠标放上去就显示信息了,主要描述的是一些引脚复用的信息。

    直接左上角ProjectGenerate Code ,填上Project Name,在toolchain/IDEx选择MDK-ARM V5,就可以生成工程了,方便的很。

    因为撸主只是用了PA5的LED, 以及PA2,PA3的USART,所以在工程里面,只有关于GPIO的设置。

    

    同时我还要给小伙伴们说一下,我在使用STM32 ST—LINK Utility时,一直出现下面的状况。不过这个我个人感觉用处不大,因为我们不光要下载代码,还要调试代码,直接在MDK里面Debug就可以了。

1.撸代码初体验

    要撸代码,首先要要下载固件库啊,我认识ST,就是因为它的固件库,提高了代码的可复用性啊。ST下载L4的固件库解压后是这个样子的,在研究了一下他的固件库和网上各位大神的描述后,我有了下面的理解。

2.啥是HAL和LL

    STM32L476的固件库中提供了两个例程文件夹,一个是Example,也就是使用硬件抽象层(HAL)的API,另外一个是Example_LL文件夹,它的主要特点是完全独立于HAL,并且能以单独模式使用。说简单点就是HAL更倾向于上层,更容易理解,而LL更贴近于硬件,直接操作寄存器,速度更快,当然现在计算机运算速度已经大大提升,不用担忧以前八位机那样令人捉襟见肘的计算能力,但换句话来说,以前的八位机可是控制火箭上天呢。

    下面是撸主对两个HAL和LL文件的对比


    左边是LL文件,右边是HAL文件,可以看到LL文件是直接操作了寄存器,而HAL文件则多了一步,这是什么意思,撸主暂时没搞懂,求知道的大神指点迷津。

3.怎么撸板

当然呢,撸主呢我是从F1开始使用STM32的,以前的使用固件库方式建立工程的时光还历历在目,但是呢我找遍了ST的网站,都没有找到以前熟悉的固件库,再加上最近几位老湿要退隐了,心中不免有种伤感。但是呢,每年都有老湿前赴后继的投身娱乐事业,聪明的小伙伴们完全可以从Drivers文件夹建立自己的工程,当然呢这里就不多说了。最快的方法当然就是打开ProjectsSTMxx-ooExamplesxx-oo,然后Keil打开,就可以开心的撸代码了。当然如果你不想用Examples里面的文件,想要自己建立工程也可以,那就打开ProjectsSTMxx-ooTemplates。不过所有的这些都必须保证你的Keil下载了STM32L4xx_DFP文件,我的Keil就是死活不能和Keil的服务器联系不上。打开工程后,编译失败便是注定的结果。但是每天不撸代码心里不舒服啊,不要着急,下面我会讲的。

4.馅饼从天而降

     没有DFP文件无法干活啊,没办法只好在网上百度搜索L4系列的DFP文件,天哪,竟然在百度盘里找到了,功夫不负有心加班狗,竟然让我找到了,虽然是1.1的版本。我那个激动啊,马上导入MDK,一切都安静了,天亮了。改写代码

 HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET); //LED 常亮。


三.总结与展望

    经过一番波折,总算让程序跑起来了,下次会写串口,并用它来接收来自星星的你的信号。

四、疑问

    上两幅图,大家找找问题吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

3

主题

103

帖子

55

积分

注册会员

Rank: 2

积分
55
沙发
发表于 2016-5-9 10:54 AM | 只看该作者
期待后面的分享。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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