(一)学习GPIO端口的初始化设置三步骤
GPIO相关的寄存器 首先需要知道的是,STM32中对于GPIO口的操作,无非就是操作下面的寄存器而已,所谓的标准库也好,HAL库也好,它们都只是对操作寄存器的过程进行了封装,目的是为了减轻你编程时的工作负担。因此对于寄存器的描述,你只要稍微了解一下,大概知道每个寄存器是干啥的,有哪些位,是如何配置的就行,除了一些你觉得需要留意的地方,其它的完全没有必要完全记住,用的时候知道在哪里查就行了。 两个32位的配置寄存器:GPIOx_CRL、GPIOx_CRH 两个32位数据寄存器:GPIOx_IDR、GPIOx_ODR 一个32位的置位/复位寄存器:GPIOx_BSRR 一个16位复位寄存器:GPIOx_BRR 一个32位锁定寄存器:GPIOx_LCKR 注:具体的寄存器描述可以参考《STM32F10x-中文参考手册》的GPIO章节的P113页。强烈建议先花几分钟先看一下这一部分的内容。 GPIO地址
时钟地址
初始化地址以及GPIO偏移量
(二)在STM32cubeMX中创建项目
项目设置
在part name里选择自己的芯片,点击信息栏中的具体芯片信息选中,点击start project: 点击system core,进入SYS,在debug下选择serial wire:
时钟设置
接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上: 点击相应的引脚设置输出三个,是PA4,PB9,PA0:
项目完成创建
配置好自己的路径和项目名,IDE那项改为MDK-ARM:
(三)keil中编译项目
CubeMX中code generate选择生成初始化.c/.h文件后点击generate code,选择open project 系统自动打开keil
main函数中加入以下代码
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_Delay(1000);
}
build debug
运行效果如下
小结
通过这次LED流水灯的学习就像掌握了HELLO WORLD一般,是嵌入式编程最基础的东西。通过本次实验了解到了关于GPIO寄存器的相关操作。
|