第4周作业--STM32寄存器&HAL库方式的LED程序(二)(HAL库方式实现LED程序)

1.下载安装 STM32CubeMX

STM32CubeMX 官网:STM32CubeMX

2.安装HAL库并且创建项目

创建项目过程如下
image
点击New Project
创建完后搜索我们需要的芯片型号STM32F103C8T6
image

配置引脚

我们按照要求选择管脚 PA5、PB9、PC14 ,只需把目标 LED 对应引脚设置为 GPIO_Output 即可

示例如下图:

image
在RCC选项中如下配置
image
在USART1中如下配置
image

配置时钟

image
选择好之后,需要将时钟配置为 72 MHz ,如果有弹出窗口直接点击 ok 即可:

保存工程

image
工程文件注意放在自己容易记住的内存空间中
并且正确闵名

然后点击 Code Generator 进行下一步配置:
image
最后直接点击 GENERATE CODE 创建工程文件即可,成功创建文件之后,会有弹窗如图:
image
image

最后直接点击 GENERATE CODE 创建工程文件即可,成功创建文件之后,会有弹窗如图:

image

这里我们直接选择 open project ,即可直接打开项目

代码

代码设计

        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);    // 设置 PA-5 引脚链接的灯泡为亮
      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);    // 设置 PB-9 引脚链接的灯泡熄灭
      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);    // 设置 PC-14 引脚链接的灯泡熄灭
      HAL_Delay(1000);                    // 设置延时,单位是毫秒(ms)

      HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);
      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);
      HAL_Delay(1000);

      HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);
      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);
      HAL_Delay(1000);

注意:所有自己编写的代码请放在 /* USER CODE BEGIN XXX // USER CODE END XXX */ 之间,这样我们修改工程的时候你自己写的代码就不会被删除

烧录测试(

直接按照前面我们在使用寄存器编写流水灯程序时的编译烧录方法进行烧录测试即可

测试结果如下:
image

仿真模式设置

配置如图:

image

注意:图中的位置一定要配置好,否则仿真运行之后,打开逻辑分析仪器,会出现:无法找到对应的引脚、无法找到端口、添加端口失败等问题

仿真运行

启动逻辑分析仪

首先,按照我们在 ARM 汇编中提到的流程,使用 keil 仿真运行我们点亮小灯泡的程序,如下:

image

然后选择并打开逻辑分析仪:

image

界面如下:

image

添加目标端口

然后再逻辑分析仪中选择我们要观察的 I/O 口:

image

image

通过定义的引脚进行添加,如果使用的是 A5 ,则直接添加 PORTA>>5:

image

引脚添加完成之后,要将所有引脚的 Display Type 都设置为 Bit ,这样才能看到想看到的效果

添加了引脚之后,直接关闭此页面即可,然后运行程序,我们就能看到相对应的波形图:

image

由波形图可知,其实小灯泡是低电平发光,高电平熄灭,所以,小灯泡(发光二极管)的初始状态应该设置为高电平才能使其熄灭

实际波形变化时间如下:

image

实际时间为 1.006s ,接近于 1s
参考文献:https://www.cnblogs.com/ppqppl/articles/16773030.html

posted @ 2022-10-15 21:29  qgrwljzy  阅读(68)  评论(0)    收藏  举报