logo资料库

STM32Cube 官方例程学习指南.pdf

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
首页
第一部分 准备工作
第二部分 例程分析
第一章 GPIO
1.GPIO_IOToggle
2. GPIO_EXTI
第二章 UART
1. UART_Printf
2. UART_Hyperterminal_IT
3. UART_Hyperterminal_DMA
第三章 TIM
1. TIM_TimeBase
2. TIM_PWMOutput
3. TIM_InputCapture
4. TIM_PWMInput
5. TIM_OCActive
6. TIM_OCInactive
7. TIM_OCToggle
8. TIM_OnePulse
9. TIM_DMA
10. TIM_DMABurst
11. TIM_ComplementarySignals
12. 另外 7 个例程只作简要说明
第四章 ADC
1.ADC_RegularConversion_Polling
2.ADC_RegularConversion_Interrupt
3.ADC_RegularConversion_DMA
4. ADC_TriggerMode
5. ADC_InjectedConversion_Interrupt
6. ADC_DualModeInterleaved
7. ADC_TripleModeInterleaved
第五章 DAC
1. DAC_SimpleConversion
2. DAC_SignalsGeneration
第六章 DMA
1. DMA_FLASHToRAM
2. DMA_FIFOMode
第七章 FLASH
FLASH_EraseProgram
第八章 RTC
RTC_Calendar
第九章: 其它例程简介
STM32Cube 官方例程学习指南 STM32CubeMX 是 ST 官方提供的一个代码生成工具。使用该工具,通过图形化的配置方法,就能 快速生成 STM32 的各种片上外设的初始化代码。CubeMX 生成的软件工程使用 HAL 库,HAL 库是 ST 以后主推的外设驱动库。另外 CubeMX 还提供了 FATFS、FreeRTOS、LWIP、USB 库等中间件的支持,配 置之后生成软件工程,工程文件就包含了相应代码。 本文档以 STM32F4 系列为例,简要地分析官方提供的 Cube 例程。希望能够帮助 CubeMX 初学者 快速掌握 STM32 的常用外设使用方法。文档不求全面,只讲常用的外设,对不常用的只进行概况性地 描述。同时,文档只对例程进行直接分析,不对其他文件进行详述。 第一部分 准备工作 首先是下载 STM32CubeF4 支持包,可以到与非网 ST 社区搜索 STM32CubeF4,然后下载 当前版本已经更新到 V1.13.0。点击附件中的 STM32CubeF4,转到下载链接地址。附件大小 300M 左右。 本人当前使用的是 V1.9.0 版本的,例程相差不大,后面就用 V1.9.0 版本的例程进行分析。 下载后解压,得到如下图的文件,其中例程放在 Projects 文件夹中: 1 / 34
打开 Projects 文件夹,可以看到前 12 个文件夹分别官方提供的 12 款评估板,后面我们仅以 STM324xG_EVAL 评估板的例程为讲解内容。 STM324xG_EVAL 文件夹中,Examples 文件夹存放的就是片上外设的使用例程。 (Applications 文件夹是 STM324xG_EVAL 相关的一些高级应用例程,如 FreeRTOS、FatFs、LwIP、USB 等, 有一定基础之后可以学习这里面的内容。本文不作分析。) Examples 文件夹提供了 27 个外设对应文件夹,每个文件夹包含若干个例程,后面将对常用的外设例 程(不是全部)进行简要分析。 2 / 34
下面将挑选常用外设的例程进行分析,顺序是从简单的到复杂的。 第二部分 例程分析 GPIO 共有两个例程:外部中断和 IO 翻转。 第一章:GPIO 1. GPIO_IOToggle 打开…\GPIO_IOToggle\MDK-ARM 文件夹下的 MDK 工程,打开 main.c 文件。 如 main.c 文件开头的描述,本例程描述如何配置 GPIO 和通过 HAL API 函数使用 GPIO。 看 main 函数: 3 / 34
分析:从注释可以看出,GPIO 的控制只需要 3 个步骤,使能 GPIO 时钟、配置 GPIO 模式、控制 GPIO 状态。前两个步骤的代码不需要用户手动输入,完全有 STM32CubeMX 生成,用户只需要在 CubeMX 中用图形化界面进行配置。(详细操作步骤可参考本人编写的 STM32Cube 学习笔记,或者其他 STM32Cube 入门教程。)步骤 3 的重点在 HAL_GPIO_TogglePin()函数,在控制 GPIO 反转的。其他控制 GPIO 输出状态的函数还有 HAL_GPIO_WritePin()。 2. GPIO_EXTI 该例程演示如何使用 GPIO 的外部中断功能。 打开…\GPIO_EXTI\MDK-ARM 文件夹下的 MDK 工程,打开 main.c 文件。先看 main 函数: main 函数只有个语句,分 3 个部分。第一部分是系统时钟配置。第二部分是板级支持配置,本例 中是初始化两个 LED 控制口。第三部分是配置外部中断。这三个部分的代码功能都可以通过 CubeMX 配置生成,不需要用户输入。 最后,要在回调函数中实现中断响应的功能代码。 HAL_GPIO_EXTI_Callback()函数是 HAL 库的外部中断回调函数,所有的外部中断都是使用该函数。 然后在处理时,判断是哪个引脚号对应的中断。 UART 共有三个例程。 第二章:UART 4 / 34
1. UART_Printf 打开…\UART_Printf\MDK-ARM 文件夹下的 MDK 工程,打开 main.c 文件。 如 main.c 文件开头描述,本例演示了如何将 printf()函数的输出功能映射到串口上。 看 main 函数: main 函数分为 3 部分。第一部分是系统初时钟配置。第二部分是初始化 UART。第三部分是使用 printf()函数输出一个语句。在 126~133 行,就是实现过程。 5 / 34
其中 PUTCHAR_PROTOTYPE 是一个宏,该宏已经在 main 文件开头给出。 因此,对于 MDK-ARM 使用的编译器,126~133 的函数等效于。 实现该函数并包含 stdio.h 文件之后,程序中就可以用 printf()通过 UART 输出字符串了。 2. UART_Hyperterminal_IT 打开…\ UART_Hyperterminal_IT\MDK-ARM 文件夹下的 MDK 工程,打开 main.c 文件。 该例程演示如何使用串口发送和接收中断。 看 main 函数: 在 main 函数中已经标注了各个步骤的序号。步骤 1 就是初始化串口,和上一个例子形式差不多。 步骤 2 是演示 HAL_UART_Transmit_IT()函数的用法,该函数的功能是将 aTxStartMessage[]数组的 TXSTARTMESSAGESIZE 个字 节 数 据 发 送 出 去 , 并使 能 发 送 完 成 中 断 , 当发 送 完 成 后 会 调 用 一 次 HAL_UART_TxCpltCallback()回调函数。步骤 3 是演示 HAL_UART_Receive_IT ()函数的用法,用法和发送 函数类似。功能是使能 UART 接收中断,接收的数据存入缓冲数组 aRxBuffer[],在接收数据量达到 RXBUFFERSIZE 字节时调用一次 HAL_UART_RxCpltCallback()回调函数。用户可以在回调函数中添加数据 处理的代码。 6 / 34
步骤 4 是等待串口空闲。步骤 5 是再次发送数据。 步骤 6、7、8,过程和前面类似,注释已经说明清楚。 本例中回调函数的内容很简单,就是点亮 LED。 3. UART_Hyperterminal_DMA 该例程演示如何使用串口 DMA 发送和接收及中断,和 UART_Hyperterminal_IT 结构完全相同,只 是把函数的后缀都改成了_DMA。而且回调函数都是一样的。 7 / 34
TIM 共有 18 个例程。定时器是 STM32 中用途最多变的外设。下面分析几个典型应用例程。 第三章:TIM 1. TIM_TimeBase 打开…\TIM_TimeBase\MDK-ARM 文件夹下的 MDK 工程,打开 main.c 文件。 该例程是定时器最基本的应用,即定时中断功能。 看 main 函数: 一共只有两个步骤。步骤 1 是配置定时器,步骤 2 是启动定时器并使能中断。步骤 1 是通过 CubeMX 配置生成代码。步骤 2 需要用户手动添加。 8 / 34
分享到:
收藏