一、搭建STM32的开发环境
(一)安装jdk
由于STM32CubeMX是Java实现的,需要安装jdk环境。
jdk官网下载链接:
https://www.oracle.com/java/technologies/javase-downloads.html
(二)安装STM32CubeMX
1.下载地址:
https://www.st.com/en/development-tools/stm32cubemx.html
(详细安装过程参见链接)
2.安装固件库
①运行CubeMX
②选择 Help->Magne .... 安装固件库
二、HEL库GPIO端口3只LED红绿灯的周期闪烁
(一)CubeMX建项目
1.新建File->Project
2.选择芯片STM32F103C8
3.SYS选择
4.RCC选择
5.选择端口输出设置,选择需要的端口,点击设置GPIO_OUTPUT,我选择的是PA4,PB5,PC14
6、GPIO配置:
7.Clock Configuration设置
8.Project Manager设置(注意路径全为英文,不然最后生成代码会报错)
9.创建完成并用keil打开 (点击生成代码显示如下框图再点击中间选项直接进入MDK)
(二)main.c代码修改
1.在while(1)中输入以下代码
10、最后用ST-LINK烧入代码实现流水灯:
4
11、观察三个输出波形:
二、用stm32F103的GPIOA端某一管脚接一个开关(用杜邦线模拟代替)。采用中断模式编程。
1.建立工程,配置参数
重新建立一个新的工程,按照上面的实验步骤进行相同的配置后,又多出来了一个GPIO接口来当作开关,我这里使用了GPIOA的PA8。
2、配置NVIC
3.代码编写和编译
打开图中的文件后在HAL_GPIO_EXTI_Callback()函数中写入以下的代码
4、打开main.c文件,在主函数while(1)中调用上面的函数
5、编译并将代码烧录进芯片观察现象:
5
三、使用Proteus8.15,建立一个 stm32f103c8 的固件项目,绘制上述实验中的系统电路, 然后加载对应的 .hex 程序,仿真运行,观察运行效果是否符合预期。
1.创建新工程
创建新工程,然后名称和路径自己设置,最好不要有中文路径,改好后直接点击next
下面的还是直接点击next
下面的界面中,按照步骤选择出所用的STM芯片系列
2.设计电路
点击下图中“P”的标志,然后可以在搜索栏目中查找你所需要的元器件,然后双击元器件它就会增添到左侧的元器件栏目中。(不知道元器件英文标识的可以查protues元器件对照表)
然后就可以根据你的keil的设计代码中,你所使用的引脚与LED进行连接:
连接完成后,打开对应keil的项目,然后运行产生hex文件,点击芯片,在图中位置找到自己的keil项目,在里面找到hex文件,选择完成过后,点击确定
注意:若找不到hex文件,可以在keil中,点击魔术棒,点击output,看是否勾选了“生成HEX文件”
然后可以点击运行了
依次点亮:
3.建立任务二中的电路
具体步骤和上述的步骤一样
五、在proteus电路中加入示波器模块,观察GPIO端口波形
在左侧元器件栏目中找到示波器
将要观察电平波形的地方与示波器的接口连接
六、心得体会:
硬件连接的重要性不容忽视。在实验开始前,确保LED和开关与STM32芯片的正确连接是实验成功的基础。任何一处连接错误都可能导致LED无法正常工作或者中断无法正确触发,因此在连接过程中需要仔细核对引脚定义和连接方式。
调试过程也是一个不断学习和发现问题的过程。当遇到LED不亮或者中断不响应等问题时,需要通过逐步排查可能出现问题的环节,比如检查代码逻辑是否正确、硬件连接是否松动、中断配置是否准确等。通过不断地调试,不仅能够解决当前实验中遇到的问题,还能加深对整个系统的理解,提高自己的调试能力。
这次实验让我更加深入地了解了STM32的开发流程和相关知识,从硬件连接到软件配置,再到代码编写和调试,每一个环节都紧密相连,只有掌握好每一个部分,才能顺利完成实验项目,实现预期的功能。同时,也让我感受到了嵌入式系统开发的乐趣和挑战,激励我在今后的学习和实践中继续深入探索这一领域。