一、 准备工作
1.1 实验要求
安装 stm32CubeMX,配合Keil,分别尝试使用寄存器地址方式(汇编或C,不限) 和HAL库这两种方式,完成下列任务:
1、重做上一个LED流水灯(博客【嵌入式08】)作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
2、在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察3个GPIO端口的输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
1.2 STM32CubeMX简介
1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用。STM32CubeMX几乎覆盖了STM32 全系列芯片。它具有如下特性:
① 直观的选择MCU 型号,可指定系列、封装、外设数量等条件
② 微控制器图形化配置
③ 自动处理引脚冲突
④ 动态设置时钟树,生成系统时钟配置代码
⑤ 可以动态设置外围和中间件模式和初始化
⑥ 功耗预测
⑦ C 代码工程生成器覆盖了STM32 微控制器初始化编译软件,如IAR, KEIL,GCC。
⑧ 可以独立使用或者作为Eclipse 插件使用
1.3 实验所需要的软件和硬件
在本次实验中,使用到的STM32硬件为,STM32F103C8T6; 软件为,STM32CubeMX软件、KEIL MDK-arm软件,以及STM32F1xxHAL库
二、 使用CubeMX新建工程点亮LED灯
2.1 新建工程
1 打开cubeMX在主界面选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR 2 进行芯片型号选择,一般直接在左上角搜索自己的芯片型号即可。
通信模式选用异步通信
操作如下
引脚配置
配置项目设置(名称、位置、环境):
生成项目:
2.2 代码编写和运行结果
keil里,在main.c文件的main函数下的while循环中,添加下面几行代码即可。
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);//PA4
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14
HAL_Delay(1000);//1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);//PA4
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14
HAL_Delay(1000);//1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);//PA4
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//PC14
HAL_Delay(1000);//1s
运行结果,生成.hex文件
2.3 烧录并实验
将C8T6与USB转TTL相连,接入电脑端,打开FlyMcu进行烧录
实验结果
三、keil观察3个GPIO端口的输出波形
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
1.1 设置仿真模式
点击魔法棒狗设置Dubug 设置好后重新执行下结果 再点放大镜
1.2 运用逻辑分析仪
设置好后点及logic Analyzer
给逻辑分析仪中添加要观察的IO口
添加好后,点击运行
运行后点击X截至以下图片
观察实际的变化的实践,还是有点误差
四、总结
以上做的有点粗糙,请多多指点。
五、 参考链接
https://blog.csdn.net/qq_46467126/article/details/120847240?spm=1001.2014.3001.5502
|