首页 > 评测 > 不仅仅是低功耗——Nucleo-L432KC开发板评测

不仅仅是低功耗——Nucleo-L432KC开发板评测

Nucleo   ST   L432KC   低功耗   
  • 作者:刘昆磊
  • 来源:21ic
  • [导读]
  • 横跨多重电子应用领域、全球领先的半导体供应商意法半导体(ST)公司的STM32L4系列以其超低功耗的性能,领先于同类产品!如今又推出一款用经济实惠的STM32 Nucleo开发板——Nucleo-L432KC。

(2)同时也说明大家的开发环境和编译器配置对处理器的性能发挥也是不可忽略的。

(3)最后还有我们能不能单单看Coremark代码的跑分来就能说明处理器性能到底有多高???

四、开发

说到Nucleo-L432KC开发,大家都应该非常熟悉,意法半导体ST公司为STM32建立的完备的生态系统,提供了包括低成本的Nucleo系列、Discovery探索系列和全功能系列等种类丰富的评估板帮助用户熟悉STM32微控制器;同时支持多种主流的IDE,包括MDK、IAR、GCC-based IDEs等集成开发环境,另外还支持云端开发Mbed;在软件方面,ST为STM32微控制器提供了功能强大的标准库和HAL库,以及最新推出的LL库,并提供了大量的工程实例和开发模板,帮助工程师快速开发STM32的工程;此外还有ST还推出的STM32 CUBEMX配置工具可使用图形化界面完成STM32微处理器的初始化配置工作。

ST公司推出的开发工具可见下图。

41.jpg

图4-1 STM32软件生态系统

关于ST公司为STM32系列微控制器提供的各种库可以见下图。

42.jpg

图4-2 STM32微控制器支持的库

不同库的特点可见下图。

43.jpg

图4-3不同库的比较

通过上面的简单对比,可以看出,目前ST公司推出的HAL库功能最为齐全。目前ST正为用户逐步退出LL库,但目前还没有覆盖所有系列的MCU,不过也给出了相应的时刻。

目前STM32L4系列的LL库已经推出了,应该也是ST公司推出最早的LL库,我们可以在大家下载到的HAL库目录中找到LL库,如下图。

44.jpg

图4-4 STM32L4的HAL库和LL库

可能有人会疑问,有了强大的HAL库了,还要推出LL库,在两种库之间如何选择使用呢?我认为下图应该比较清楚清楚的说明了HAL和LL库的关系和使用。

45.jpg

图4-5库的关系

HAL库是目前功能最强键的库,支持所有的STM32微控制器的片内外设操作,可很方便的使用户编写的代码从一个STM32系列移植到另一个系列,可以利用STM32 CubeMX软件直接生成HAL库的初始化代码,非常适合于不同级别的用户使用,但是使用HAL库编写的代码执行效率相对而言不够高效,而且不够灵活,在一些情况下不能满足用户多样化的操作,可能这时候就需要用户直接操作寄存器,但是HAL库中添加直接操作寄存器的程序会使用户程序可读性变差。因此,ST公司开发了更加接近硬件的LL库,该库可直接访问STM32微控制器的寄存器,编译代码更小、更加紧凑,而且可以很方便的和HAL库共同使用,是对HAL库的一个有效的补充,当然,用户也可以只是用LL库或HAL库,也可以同时使用HAL库和LL库。但是使用LL库也会带来一些问题,就是在不同的STM32系列微控制器之间的移植性较差,无法保证能够在不同谢列之间移植成功,需要用户更多的了解STM32的寄存器级的操作等等问题。

之前用惯了MDK和IAR两个开发工具,今天来体验一下另一个免费的开发工具System Workbench for STM32,该工具是基于Eclipse的免费的跨平台软件,可运行在windows、Linux和Mac系统上

46.jpg

图4-6 System Workbench for STM32网站

接下来就来测试一下HAL库和LL库共同使用会有哪些好处,在这里我们选择多数STM32单片机都有的内部硬件CRC校验模块,该模块在很多地方都使用,也比较简单,我们在系统开始首先配置CRC_HandleTypeDef类型的结构体变量,将其配置为CRC8,使用HAL_CRC_Init()函数对CRC模块进行初始化,然后使用HAL_CRC_Calculate()函数对数据进行CRC8校验计算,假设之后我们想要进行CRC16的校验该如何实现?在使用HAL库时,需要重新修改CRC的结构体变量,调用HAL_CRC_Init()函数,这样HAL_CRC_Init()内部就有很多操作是重复的,这样做回是程序效率降低,另一种方法是在HAL库编程过程中直接插入寄存及的操作,这样会使程序的可读性变差。现在使用LL库的LL_CRC_SetPolynomialSize()和LL_CRC_SetPolynomialCoef()就可以直接修改CRC模块配置,而不用再次调用HAL_CRC_Init()函数。

 

图4-7LL库函数

测试环境为System Workbench for STM32+STM32 CubeMX+ STM32Cube_FW_L4_V1.5.0,大家自行搭建。

首先在STM32 CubeMX中新建Nucleo-L432KC开发板工程。

48.jpg

图4-8新建CubeMX工程

启用CRC模块和UART2串口模块。

49.jpg

图4-9配置片内外设

将STM32L432KC的时钟配置为HIS,HCLK为80MHz。

  • 本文系21ic原创,未经许可禁止转载!

网友评论