目录
一、制作要求
以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB、GPIOC、GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒。
1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;
2)C语言编程实现。
二、工程建立
由于工程对我们目前来说有点难了,所以直接借用网上现有的工程:
http://www.doyoung.net/YT/xx3.html(里面有很多基础的程序,可以直接调用就好)
三、编写程序
3.1、修改增加工程
首先将user里面的main里的内容删掉
编写一个led.c:
#include "led.h"
void LED_Init(void){ //LED灯的接口初始化
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //初始化管脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置输出模式,推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速率
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //将该管脚初始值定义为低电平
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_15);
}
编写led.h来声明在led.c中创建的LED_Init(void)函数:
led.h
#include "stm32f10x.h"
void LED_Init(void);//初始化
编写好这两个文件之后,我们将这些导入工程中的Hardware中(双击Hardware然后找到刚刚保存的led.c,将其添加进Hardware)
编写main.c(流水灯的主要是让管脚输出在高低电平之间反复横跳,这样来实现灯的闪烁和熄灭)
main.c
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
int main (void){//主程序
RCC_Configuration(); //时钟设置
LED_Init();
while(1){
GPIO_SetBits(GPIOA,GPIO_Pin_0); //这个就是将PAO设置为高电平就是3.3V
delay_ms(400);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//这个就是将PA0设置为低电平就是0V
delay_ms(400);
GPIO_SetBits(GPIOB,GPIO_Pin_0); //这个就是将PB0设置为高电平就是3.3V
delay_ms(400);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);//这个就是将PB0设置为低电平就是0V
delay_ms(400);
GPIO_SetBits(GPIOC,GPIO_Pin_15); //这个就是将PC15设置为高电平就是3.3V
delay_ms(400);
GPIO_ResetBits(GPIOC,GPIO_Pin_15);//这个就是将PC15设置为低电平就是0V
delay_ms(400);
}
}
3.2、仿真查看波形图
在仿真之前进行调制,首先点击“锤子”,然后选择Debug中的use simulator即可
然后运行后调出逻辑窗口:
然后添加我们想要查看的管脚号,需要将所有的Display Type改成bit:
然后进行仿真就可以得到波形图了:(如果波形都是一条直线的话,可以上下滑动鼠标,使波形缩小便于观察到波形的变化)
四、程序烧录
4. 1、程序的烧录需要软件
FLY MUC和CH340驱动
https://blog.csdn.net/lengyuefeng212/article/details/104178386
STM32串口下载
mcuisp软件下载链接,百度网盘链接:https://pan.baidu.com/s/1WyvtnCJad_BqXbwTzhcofw
提取码:h2xc
注意:在安装STM32驱动时需要将外部的串口接上电脑,在进行安装,不然容易安装失败
打开SETUP.EXE,提示INF文件为CH341SER.INF,我们不需要理会(341,340共用的),所以直接点安装即可!!
如果提示:预安装成功 则参考安装失败解决办法解决一下即可。
对于WIN8系统,安装失败,可参考此贴:http://www.openedv.com/posts/list/0/45091.htm
在插入USB后先去设备管理器看是否多出一个端口:
在烧录的时候用FLY MUC:
4.2、连线方法
PA9---RXD
PA10---TXD
对应的GND--D
3V3--3
STM32的GND接面包板的负极,LED是长的一段连STM32对应的端口,短的一端连接面包板的负极。
4.3、运行结果