本文共 1535 字,大约阅读时间需要 5 分钟。
本质上,库函数和寄存器都是用于控制芯片外设的工具。库函数通过函数调用提供接口,方便开发者操作特定的外设,而寄存器则是底层硬件直接控制的分担存储器单元。两者在操作外设时都能达到类似的效果,但性能特性存在差异。需要注意的是:寄存器操作通常只能通过ASM代码实现,而库函数则需要通过C语言API调用。
寄存器的理解至关重要。深入理解寄存器的工作原理,能帮助开发者快速定位和解决硬件配置问题,因为寄存器是调试过程中最直接的操作对象。
开发环境:MDK5
固件库版本:V1.4(F4专用)固件库下载地址:[官方下载链接](https://www.st.comtools stm32工具包)新建工程模板的具体步骤如下:
创建文件夹结构:建立根目录Template
,再创建子文件夹CORE、FWLIB、OBJ、SYSTEM、USER
。这些文件夹名可任意命名,方便识别。
选择芯片型号:在MDK中完成项目设置,选择芯片型号STM32F407ZG
。
复制固件库文件:将固件库中的src
和inc
文件复制到FWLIB
文件夹,启动文件startup_stm32f40_41xxx.s
复制至CORE
。
配置头文件路径:在MDK中手动添加头文件目录,确保头文件路径正确。添加路径如下:
CORE
、USER
、FWLIB\inc
。添加特定头文件:在USER
中添加必要的头文件,包括stm32f4xx.h
和system_stm32f4xx.h
。
Springconfiguration:打开system_stm32f4xx.c
,修改PLL_M
为8
以达到系统时钟频率168MHz
,并配置外部时钟HSE
为8MHz
。
payload<
在编码阶段,建议将main.c
文件中的Delay
函数实现如下:
#include "stm32f4xx.h"void Delay(__IO uint32_t nCount){ while(nCount--) { /* delay单个周期 */ }}int main(void){ GPIO_InitTypeDef GPIO_InitStructure; // 配置GPIOF引脚为输出 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUTPP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOF, &GPIO_InitStructure); while(1) { GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10); Delay(0x7FFFFF); // 偽Wait 0.5秒 GPIO_ResetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10); Delay(0x7FFFFF); }}
stm32f4xx_it.c
中的函数调用和主函数内容。stm32f4xx_it.c
文件左边缺少加号,切断并重新启动工程即可。该工程模板基于官方固件库V1.4
配置完成,适合STM32F40xx
系列芯片使用。
转载地址:http://sbdkk.baihongyu.com/