发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表
打印
[其他ST产品]

【NUCLEO试用】NUCLEO-L552ZE-Q 点灯

[复制链接]
2147|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
首先感谢21ic和辛苦的工作人员组织这次活动,也感谢ST公司提供最新的开发板进行试用。
我拿到的是NUCLEO-L552ZE-Q开发板。给小伙伴们展示一下板子的细节吧。

随快递一起寄来的还有论坛去年印刷的《STM32粉丝精选集》,这些**也还是很有参考意义的,比如《同学们,ST关于i2c-e2prom的例子,修改一下几点就可以了》。

下边开始本次的试用分享:点灯。
使用定时器做基本的延时控制,使用按钮控制3个LED,按下点亮、抬起熄灭。
由于L5系列是st最新的芯片,所以第一步就是准备相关的工具软件。
将CubeMX软件更新到最新版本(低版本没有L5系列芯片),然后安装L5系列的软件包。

keil软件也要更新相应的PACK,我使用的是KEIL V5.23 ,在“pack installer"也是没有L5系列,所以直接在KEIL官网下载《Keil.STM32L5xx_DFP.1.1.0.pack》文件,手动在“pack installer"中安装即可。(根据后边的试验,最好是安装KEIL V5.27版本)
完成以上准备工作,就可以开始试验了。
首先打开CubeMX,选择STM32L552ZET芯片,新建工程。这时候我们会看到一个提示:

L5系列芯片使用基于内置Arm TrustZone硬件安全技术的ArmCortex-M33 32位RISC处理器内核,所以才会有此提示。由于对芯片不熟悉,我选择了NO,暂时不使用TrustZone。这样大家看到的界面就跟使用其他系列芯片时差不多(我自己点击yes看了一下,在配置上还是有很大差异的,很多外设会增加一些复选框)。
正式配置CubeMX工程,首先配置时钟,在HCLK中输入16MHz,让CubeMX自己配置时钟;

然后配置debug信息,以往用其他芯片都是在内核的sys中配置,可是L5的sys内容与其他的不一样,L5中没有debug;

仔细查找一下发现L5的debug是一个单独的选项,我们选择串行线调试;

配置相应的IO口,我们需要用到一个按钮、三个LED(考虑后边的一个试验,也同时配置了一路串口)。看一下原理图,找出相应的引脚:

对照原理图,配置PC13为输入口,取名B1;配置PC7\PB7\PA9为输出口,取名LD1\LD2\LD3:

串口使用stlink自带的串口,这个串口已经直接与单片机的串口在板内连接,可以省去串口工具并简化试验接线:

使用单片机LPUART1串口,由于连接的两个引脚并非LPUART1的默认引脚,是映射脚,所以需要在cubeMX中手动选择原理图中的两个引脚,并配置成LPUART1_TX\LPUART1_RX,通过LPUART1配置是能异步串行方式,配置波特率115200,8位数据,无校验,1停止位。

配置定时器,选择TIM3作为定时器,使用内部时钟源,定时时间约1ms:

配置外设中断,可以每个模块单独配置,也可以在NVIC中集中配置。

至此,CubeMX中的各种配置已经基本完成,可以配置工程选项了:

这里的几个选项卡都根据自己的情况酌情配置,值得一提的是,这里选择MDK-ARM时,选择的最小版本号是V5.27(前文已经提及我用的V5.23,这个在使用中可能会有问题)。配置完成后,点击“GENERATE CODE”生成初始化代码。
在keil中,增加代码一般在生成代码允许的区域进行,否则重新生成代码时用户代码会被清理。
增加如下:
1、增加全局变量定义,并在main函数中初始化:
uint8_t key;    //可以作为局部变量定义到main函数中
__IO uint8_t timCnt;
__IO uint8_t timFlag;    //本行的__IO必须使用,我不用时代码执行有错误,不知道是不是keil版本问题

2、在while(1)之前,增加打开定时器TIM3的函数调用:HAL_TIM_Base_Start_IT(&htim3);
3、在while(1)中增加如下代码段,实现功能:
                if(timFlag == 1)
                {
                        key = HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin);
                        if(key == 0)
                        {
                                HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_RESET);
                                HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
                                HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
                        }
                        else
                        {
                                HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_SET);
                                HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
                                HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
                        }                               
                       
                        timFlag = 0;
                }

4、增加定时器回调函数的编写:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
        timCnt++;
        if(timCnt >= 10)
        {
                timCnt = 0;
                timFlag = 1;
        }
}

编译整个工程。
配置选项,选择stlink和对应芯片后就可以烧录了,可是我的stlink在哪里呢?

没有stlink选项,干脆用st的utility工具进行下载后验证吧。
使用utility工具,按下图标注的顺序点击1、连接开发板(根据utility的配置,可能需要手动按下开发板复位按钮),2、打开刚刚编译生成的hex文件(此步骤可省略,在后边步骤完成)3、编程和校验,弹出新窗口。

如上边的第二步没有做,则需要在此处1打开相应的hex文件(如是多次编译验证,每次都要重装HEX文件)2、start就可以烧录了(如有其他配置需要,可在start前自行点击确认)。

烧录完成可以看到窗口的下边有如下显示。utility一般下载完成,程序就在板上自动运行了。

看一下效果:








button.png (68.86 KB )

button.png

LED_NS.rar

700.8 KB

使用特权

评论回复

打赏榜单

21ic小喇叭 打赏了 10.00 元 2020-03-14
理由:谢谢大人的精彩评测!

沙发
WoodData| | 2020-3-14 19:30 | 只看该作者
不错,楼主居然收到了NUCLEO-L552ZE。

使用特权

评论回复
评论
21ic小喇叭 2020-3-14 19:46 回复TA
对不起大哥!因为板子不够了才随机换的,我错了,不求谅解,但求不杀之恩! 
板凳
qbwww| | 2020-3-15 15:37 | 只看该作者
本帖最后由 qbwww 于 2020-3-15 16:24 编辑

没想到楼主收到NUCLEO-L552ZE-Q

使用特权

评论回复
地板
kyzhd| | 2020-3-15 19:38 | 只看该作者
没想到楼主的点灯步骤搞的这么复杂

使用特权

评论回复
5
paotangsan| | 2020-4-3 18:15 | 只看该作者
恭喜楼主呀

使用特权

评论回复
6
renzheshengui| | 2020-4-3 18:15 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
wakayi| | 2020-4-3 18:15 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
wowu| | 2020-4-3 18:16 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
9
xiaoqizi| | 2020-4-3 18:16 | 只看该作者
很不错的分享

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

75

帖子

1

粉丝