0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32CubeMX和HAL驱动库的嵌入式系统设计浅谈

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-01-09 13:59 次阅读
1.课程详情

嵌入式系统电子信息产业的基础,广泛应用于工业控制等领域。本课程选用ST公司STM32F4微控制器为载体,采用STM32CubeMX开发工具及HAL驱动库,以嵌入式硬件设计和软件设计为主线,按照“最小系统电路设计 → 开发工具使用 → 片内外设应用” 的路径,分层次、递进式的讲授嵌入式系统的设计方法。—— 课程团队

2.课程概述

嵌入式系统是电子信息产业的基础,是智能系统的核心,广泛应用于工业控制、汽车电子智能家居、医疗器械和智能穿戴设备等众多领域。伴随物联网人工智能的快速发展,嵌入式系统在智能系统中发挥着越来越大的作用。

《嵌入式系统设计》是电子信息类专业的学科基础课程。本课程选用意法半导体公司的STM32F4微控制器为载体,以嵌入式硬件设计和软件设计为主线,结合工程实践,按照“最小系统电路设计 → 开发工具使用 → 片内外设应用 ”的路径,分层次、递进式的讲授嵌入式系统的设计方法。

本课程使用了意法半导体公司STM32CubeMX开发工具以及HAL驱动库完成微控制器的设计。STM32CubeMX软件提供简洁的图形化界面,设计者无需编写任何代码,就可以完成引脚分配、时钟设置和外设设置等初始化工作,并生成基于MDK-ARM等集成开发环境的工程框架,使设计者可以更专注于应用层代码的编写。采用库函数的编程方式可以不必了解硬件寄存器的含义,利用库函数提供的接口函数快速实现功能。基于图形化的配置方式和库函数的编程方式使得初学者可以快速入门嵌入式系统的设计和开发,降低了学习的门槛。

本课程与工程实践紧密结合,课程中融入了电路设计软件的使用、硬件抽象层设计、状态机设计和通信协议设计等实用的工程技能,注重培养学生解决复杂工程问题的能力。

本课程的硬件平台选用意法半导体公司的官方开发板Nucleo-F411RE。该开发板采用USB接口供电,集成ST-Link仿真器,板载基本的指示灯和按键,并设计了Arduino UNO的接口,方便用户接入Arduino生态圈的扩展板。NucleoF411RE开发板价格便宜,不足百元,可以很方便地在淘宝等购物平台购买。

各教学单元的内容及学时分配如下:

1、嵌入式系统概要:4学时

2、STM32F4微控制器电路设计:4学时

3、STM32微控制器开发环境的搭建:2学时

4、STM32CubeMX软件的使用:2学时

5、MDK-ARM开发软件的使用:4学时

6、通用输入/输出接口:8学时

7、外部中断:4学时

8、定时器:8学时

9、串口通信:8学时

3.授课目标

通过课程的学习,要求学生掌握嵌入式系统的基础知识;熟练掌握Cortex-M4内核微控制器的内部结构及片内外设的应用。掌握嵌入式系统的设计及软硬件调试方法。能够设计、调试简单的嵌入式系统,使学生初步具备实际工作的能力。

4.课程大纲

01.嵌入式系统概要

掌握嵌入式系统的概念和组成;了解嵌入式系统的编程模式及程序开发方式;了解硬件抽象层设计思想。

02.STM32微控制器硬件电路设计

了解STM32微控制器的特点;掌握Nucleo开发板的设计原理;熟练应用电路设计软件完成微控制器最小系统设计。

03.STM32微控制器开发环境的搭建

了解STM32Cube生态系统的组成;了解STM32CubeMX软件的开发特点及开发流程;完成STM32开发环境的搭建。

04.STM32CubeMX软件的使用

了解HAL库的基本特点;熟练掌握STM32CubeMX的使用流程;熟练掌握MDK软件的程序编写和程序下载方法。

05.MDK-ARM开发软件的使用

熟练掌握MDK-ARM的使用流程;熟练掌握软件的调试方式;了解MDK-ARM软件的RTE工具。

06.通用输入输出接口

了解GPIO的功能和特点;掌握基于寄存器和基于库函数的程序开发方式;了解库函数的设计思想;掌握硬件抽象层的设计思想和实现方法。

07.外部中断

掌握中断的基本概念和作用;了解HAL库的中断处理流程;熟练运用外部中断进行程序设计。

08.定时器

了解定时器的功能和特点;了解HAL库的外设模块设计方法;熟练掌握定时器的定时功能使用方法;熟练掌握定时器的PWM功能使用方法。

09.串口通信

了解通信的基本概念;了解HAL库的外设初始化设计思想;熟练掌握轮询方式下的串口通信编程方法;熟练掌握中断方式下的串口通信编程方法。

5.预备知识

本课程的学习需要C语言程序设计和电子线路设计等预备课程的知识。

6.参考资料

[1] (英)Joseph Yiu著。宋岩译。 ARM Cortex-M3权威指南。 北京: 北京航空航天大学出版社,2009.[2] 刘火良。 STM32库开发实战指南(第二版)[M]。 北京: 电子工业出版社, 2018.[3] 高显生。 STM32F0实战—基于HAL库开发[M]。 北京: 机械工业出版社, 2019.

7.常见问题

[1]硬件平台:Nucleo-F411RE开发板,可在意法半导体的官方淘宝店购买[2]STM32CubeMX软件下载地址:http://www.st.com/stm32cubemx[3]MDK-ARM软件下载地址:http://www.keil.com/download/product/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3564

    浏览量

    129224
  • 软件
    +关注

    关注

    69

    文章

    4770

    浏览量

    87156
  • 驱动库
    +关注

    关注

    0

    文章

    9

    浏览量

    7154
收藏 人收藏

    评论

    相关推荐

    七大嵌入式GUI盘点

    的桌面开发工具,该工具允许开发人员在桌面上设计其GUI并生成GUIX代码,然后可以将其导出到目标。 嵌入式系统通常资源有限,包括内存、处理能力和存储空间。因此,要仔细评估 GUI 的资源需求,并进
    发表于 09-02 10:58

    myST账号无法注册导致stm32cubemx无法下载hal的固件怎么解决?

    myST账号无法注册导致stm32cubemx无法下载hal的固件包,myST账号注册卡在最后的邮箱验证环节,一直卡着无法注册通过 很急很急!以前stm32cubemx都不需要登录
    发表于 07-23 08:05

    基于STM32Cubemx创建FreeRTOS,创建UART任务遇到的两个问题求解

    基于STM32Cubemx创建FreeRTOS,创建UART任务,经过测试发现有以下两个问题: 1、串口波特率问题: 在STM32Cubemx中串口设置如下: /* USART3 init
    发表于 05-10 07:33

    stm32L051用cubemx配置不了CMOP是怎么回事?

    求教stm32L051用cubemx配置不了CMOP? 我用STM32CUBEMX配置了COMP1,程序里运行了初始化函数MX_COMP1_Init();(
    发表于 05-06 07:07

    使用stm32CubeMx时,设置DMA为Circular模式会被HAL_ADC_Start_DMA阻塞为什么?

    在使用stm32CubeMx时遇到一个问题,我在用DMA方式获取ADC数据时,设置DMA为Circular模式会被HAL_ADC_Start_DMA阻塞,不懂为什么会这样,后来换了F103芯片也一样
    发表于 04-25 08:12

    stm32cubemx 5.1.0版本生成的开启mpu的IAR工程编译报错的原因?

    今天升级了stm32cubemx 还有f4的软件包(STM32Cube_FW_F4_V1.24.0)此次升级改动较以往来说还是比较多的 freertos升级到10.0.1,cmsis-rtos升级到
    发表于 04-22 08:15

    STM32cubemx和KEIL的有什么不同?

    STM32cubemx软件有对应各个系列芯片的. 使用cubemx,生成代码框架,比如生成MDK的代码框架。但MDK也有自己的PACK。那么MDK的PACK和CUBEMX
    发表于 04-11 06:02

    求助,关于HALHAL_UART_Receive使用问题求解

    使用HAL_UART_Receive()接收数据的时候就接收不到数据了,但是程序还是一直在运行,只是无法接收到数据了。我查了挺久都没找到是为什么。求大佬解释!!!!!下面是我写的串口接收的部分程序,整体程序是使用STM32CubeMX生成的
    发表于 04-10 07:25

    STM32CubeMX生成代码软件卡死的原因?怎么解决?

    STM32CubeMX 生成代码 软件卡死!在生成代吗时,一直卡死在如图所示的状态,进度条一直就不走了。试过多次,一直如此。请问如何解决该问题,原因可能是什么?STM32CubeMX版本5.1.0
    发表于 04-10 06:03

    STM32CubeMX HAL_UART_Receive函数怎么使用?

    STM32CubeMX HAL_UART_Receive函数的使用
    发表于 04-03 08:19

    使用STM32F103RCT6开发USB设备,STM32CubeMx生成代码遇到的问题求解

    大家好,最近在使用STM32F103RCT6开发USB设备,使用的是STM32CubeMx生成的代码,但查看代码发现一个问题,HAL_PCD_MspInit函数中开启了USB外设时钟,但是他开启的是RCC->APB1ENR
    发表于 03-21 08:30

    stm32f1如何将外部中断关掉hal

    STM32F1系列微控制器是STMicroelectronics制造的32位ARM Cortex-M3内核的嵌入式微控制器系列。该系列采用了HAL(Hardware Abstract
    的头像 发表于 12-22 13:52 3203次阅读

    使用STM32 HAL进行GPIO控制的实例

    在基于STM32微控制器的嵌入式系统开发中,GPIO(GeneralPurposeInput/Output)控制是其中最基本、最常见的操作之一。通过使用STM32
    的头像 发表于 12-21 15:22 3150次阅读

    什么是嵌入式系统嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2403次阅读

    基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220(2)----驱动STSPIN220

    本文档的目标是提供关于使用STM32CubeMX驱动低压步进电机驱动器STSPIN220的详尽信息和操作指南。通过本文档,将深入了解如何利用STM32CubeMX来配置电机
    的头像 发表于 12-01 15:25 923次阅读
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驱动</b>低压步进器电机<b class='flag-5'>驱动</b>器STSPIN220(2)----<b class='flag-5'>驱动</b>STSPIN220