基于STM32F1使用STMCubeMX配合Keil实现流水灯
一、实验工具
1. STM32CubeMx
- 配置Jre
- STM32CuBeMX软件是基于Java运行环境使用,因此需安装Jre(Java Runtime Environment)进行使用
- 官网:https://www.java.com/en/download/manual.jsp
- STM32CubeMX安装
- 详细安装教程
2. 安装固态库
Help->Manager
勾选所需的固态库文件,与自己所使用的开发板型号相同
二、STM32CubeMX实现LED灯点亮
1. 使用寄存器地址方式点亮
1. 使用STM32CubeMX生成代码
-
创建新项目 New Project
-
勾选芯片型号,
使用STM32F103C8
-
点击芯片详细信息,进入到芯片配置中,方便下一步进行操作
-
配置相应引脚
- System Core->SYS修改Debug为Serial Wire
- 配置管脚,使用A7,B9,C15
勾选引脚,勾选Output选项
重复上述步骤,完成三个引脚的配置
可在GPIO中查看
- 修改GPIO管脚中输出等级
- System Core->SYS修改Debug为Serial Wire
-
生成代码
ProJect Manager->Generate Code
2. 修改main函数
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
GPIOA->ODR &= ~(1<<7); //??PA7,??????
GPIOB->ODR |= 1<<9; //??PB9,??????
GPIOC->ODR |= 1<<15; //??PC15,??????
HAL_Delay(500);//??500??
GPIOA->ODR |= 1<<7;
GPIOB->ODR &= ~(1<<9);
GPIOC->ODR |= 1<<15;
HAL_Delay(500);
GPIOA->ODR |= 1<<7;
GPIOB->ODR |= 1<<9;
GPIOC->ODR &= ~(1<<15);
HAL_Delay(500);
}
/* USER CODE END 3 */
}
3. 烧录点亮
- 进行烧录,先进行Build Target
- 使用msuisp进行烧录
- 点亮
2. 使用HAL库方式点亮
1. 生成代码
与使用寄存器点亮操作基本相同不做详细描述
与前文操作不同的是需要勾选Clock Configuration
中勾选PLLCLK
2. 修改main函数
修改main函数中while(1)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); // 灯1亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); // 灯1灭
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET); // 灯2亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET); // 灯2灭
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET); // 灯3亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET); // 灯3灭
3. 烧录点亮
使用mscuip进行烧录
三、总结
用STM32cube移植了一下之前写的程序,发现开发周期确实减少了,同时bug数量也减少了,但是就速度而言降了不少,总体来说还是不错的。而且可以为以后对RTThread实时操作系统的应用打下基础。
以及验证的功能有:
- 普通GPIO输入输出。
- EXTI外部中断
- 硬件IIC驱动OLED
- USART串口DMA的TX,RX传输。
四、参考
搭建STM32开发环境——STM32CubeMX,Keil5
使用STM32CubeMX实现流水灯
【STM32】基于STM32F4使用STM32CubeMX配合Keil点亮LED流水灯
STM32CubeMX学习笔记(4)——系统延时使用