目录
二.HAL库函数开发—用GPIO完成3只LED红绿灯的周期闪烁
四.用Proteus8.15仿真任务1,2中的系统电路,观察运行效果
一、前期准备—开发环境的搭建
1.安装JDK和MDK
1.1下载JDK,具体过程如下:
(1)JAVA官网地址:https://www.java.com/zh_CN/download/windows-64bit.jsp
(2)下载步骤:进入官网以后,首先点击下载,打开 jre-8u431-windows-x64.exe 安装包,勾选更改目标文件夹,点击安装;
选择自己要存放的路径,点击 下一步,
等待安装,安装完成以后,点击关闭,即可完成JDK环境的配置。
1.2下载MDK
(1)MDK 软件下载地址:https://www.keil.com/download/product
器件支持包下载地址:https://www.keil.com/dd2/pack
(2)下载完毕后,会出现一下三个文件:
首先安装MDK5,双击MDK514.exe文件,点击next进行下一步,勾选同意的选项框,点击next,
分别点击Core以及Pack后的Browse,选择mdk软件和硬件支持包的安装位置,建议安在D盘,再点击next,之后需要填一些一些信息,可以随便填,不影响对后续的使用,填写完毕后点击next。
下面就可以等待软件安装,若弹出是否信任MDK软件相关的信息点击同意,否则会影响使用,
下载完成后,在界面中将"Show Release Notes"选项框取消,然后点击Finish,完成安装。
之后会弹出硬件支持包安装界面,暂时不用理会,直接点击OK按钮,然后点击右上角的X按钮关闭
接着进入“keil”软件,选择File -> Licenes Management ,在Single-User界面中选择CID进行复制,
接着打开注册机"keygen.exe”,将复制的CID号粘贴到注册机的CID位置,Target选项选择ARM,然后点击Generate按钮生成LIC,将复制的LIC号复制到MDK的LIC位置,点击后面的Add LIC按钮,上面出现注册信息即破解成功。
关闭注册机和MDK,点击下载的硬件支持包安装,默认安装的MDK只有C51,由于我使用的是STM32F103C8T6,双击Keil.STM32F1xx_DFP.2.2.0pack,点击next进行安装即可,固件安装完毕。
至此,使用CubeMX所需要的JDK和MDK环境成功配置!
2.安装STM32CubeMX
(1)下载地址:https://www.st.com/en/development-tools/stm32cubemx.html
(2)安装步骤:
打开 SetupSTM32CubeMX-6.0.0.exe 文件(注:如果没有配置JDK,此步会报错!),然后点击next,接着勾选同意协议,点击 Next,界面如下:
勾选第一个,点击 Next,然后选择安装路径,
继续在弹出的界面中选择Next,然后程序自动安装,安装完成后,点击 Next。
、
最后点击Done就可以完成安装,至此CubeMx的安装结束。
二.HAL库函数开发—用GPIO完成3只LED红绿灯的周期闪烁
1.使用HAL库创建工程文件
(1)打开下载好的CubeMx,点击左上角的File文件选择“New Project”,创建工程,界面如下,
在弹出的界面中,下拉列表输入芯片名称“STM32F103C8T6”,右下角选中后,点击“Start Project”
(2)然后配置“.sys”,下拉debug模式 ,选中"Serial Wire"Timebase Source选择“SysTick”,
接着配置“.RCC”,HSE选中"Crystal/Ceramic Resonator"项,LSE选择Disable,界面如下。
(3)配置GPIO,先点击右侧芯片示意图,选择需要的端口,点击设置GPIO_OUTPUT,我选择的引脚是PA0,PB15,PC14,同时把GPIO output level置为高电平,引脚配置如下图所示:
(4)设置Clock Configuration,操作如下所示:
(5)设置Project Manager,这里特别注意,代码的生成路径不要有中文,否则后面可能会出错(至少我这里是不行的),文件名和自己的工程最好是有联系的(以免后续不知道工程内容)
点击“Code Generator”,勾选图示内容,再点击右上角"GENERATE CODE",生成文件。
但是这里会有一个问题,如果没有提前建立邮箱,需要注册邮箱信息,才能成功生成工程内容。
注册的时候,邮箱最好填自己的,可以是QQ邮箱,其他的可以随意填写,
完成以后,就可以成功生成所需内容了!
2.使用Keil编写相关项目代码
(1)实验任务;掌握HAL库函数开发方法,安装 stm32CubeMX,配合Keil,使用HAL库方式完成下列任务:用GPIO端口完成3只LED红绿灯的周期闪烁。使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。请用此功能观察3个GPIO端口流水灯的输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
(2)设计思路:通过逐个控制三个不同的GPIO引脚,实现了对三个LED灯的顺序控制。每个LED灯都会单独被点亮和熄灭,并且每个灯的点亮和熄灭之间有一个固定的延时,从而形成了一个简单的周期性闪烁模式。基于HAL库的STM32开发流程图如图所示:
(3)点开CubeMx中的项目,找到主函数main.c,在while(1)中写入代码:
while (1)
{
/* USER CODE END WHILE */
/* USER CODE END WHILE */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // PA0亮
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // PA0灭
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); // PB15亮