目录
一、工程项目创建文件夹、添加STM32标准外设库文件
1.下载标准库
下载地址: STM32标准外设软件库 - 意法半导体STMicroelectronics
解压后可以看到主要包含以下几个文件夹
2.创建工程
选择STM32F103C8系列单片机
在创建完成后将工程模板文件(User,Start,Library)拷贝到所创建的文件夹下。
在Keil中新增文件组
右击Target 1点击Add Group,并依次命名
右击命名好的文件夹,点击Add Existing Files to Group 'User'...,选择All Files,添加完成。
点击魔术棒,点击C++ -> include path 依次添加文件路径。
二、编写代码
1.主函数
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1)
{
GPIO_Write(GPIOA, ~0x0001); //0000 0000 0000 0001
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0002); //0000 0000 0000 0010
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0004); //0000 0000 0000 0100
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0008); //0000 0000 0000 1000
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0010); //0000 0000 0001 0000
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0020); //0000 0000 0010 0000
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0040); //0000 0000 0100 0000
Delay_ms(1000);
GPIO_Write(GPIOA, ~0x0080); //0000 0000 1000 0000
Delay_ms(1000);
//GPIO_Write(GPIOA, ~0x0010); //0000 0000 0000 1000
//Delay_ms(2000);
}
}
2.编辑实现
三、连接电路
四、代码烧录与实现
点击魔法棒,生成hex文件。
打开FlyMcu,进行代码烧录。
五、观察管脚的时序波形
点击Target,我使用的单片机型号是stm32f103c8t,将Xtal(MHz)修改为8.0
点击Debug,进行配置修改。
打开逻辑分析仪,点击Set Up,在弹出窗口中新建观察引脚,添加完成后把每个Display Type改成Bit。然后运行程序得到如下波形。
六、总结
通过这个实验,我对STM32寄存器操作和标准外设库的使用有了更深入的了解,在没有示波器的条件下,通过使用Keil的软件仿真逻辑分析仪功能观察管教的时序波形,也更加方便动态跟踪调试和定位代码故障点。