首先需要创建工程,我们创建工程可以参考其他人的博客,或者用已经有的工程,在已经创建好的工程里直接编程。
创建工程可参考如下 我的建议是直接下载创建好的工程,没必要自己创建
STM32F103C8T6-新建工程_stm32f103c8 创建工程-CSDN博客
打开我们的工程,直接开始编写代码
在main函数中添加头文件
#include "stm32f10x.h"
然后开始编写main 函数
在mian函数中
首先我们需要开启时钟,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);
上面代码是开启GPIOA与GPIOC的时钟。
定义一个结构体变量,来编写引脚的模式
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7);
我开启的PA6,PA5,PA7引脚。
以上代码就是开启引脚
我们还需要编写一个延时函数
如下所示,我们是通过程序延时,下面的延时并不准确,只是粗略的延时
void delay__ms()
{
int i=0,j=0,k=0;
for( i=0;i<1000;i++)
{
for( j=0;j<1000;i++)
{
for( k=0;k<5;k++);
}
}
}
然后我们需要对主函数的进行编写
在while中编写如下代码
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5); //LED0输出低
GPIO_ResetBits(GPIOA,GPIO_Pin_7);//LED1输出高
delay__ms();
GPIO_SetBits(GPIOA,GPIO_Pin_7|GPIO_Pin_5);
GPIO_ResetBits(GPIOA,GPIO_Pin_6);//LED0输出高
delay__ms();
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
delay__ms();
GPIO_SetBits(GPIOA,GPIO_Pin_5);
}
上面的代码就是对电灯进行编写,死循环。
总体代码如下
#include "stm32f10x.h"
#include "sys.h"
void delay__ms()
{
int i=0,j=0,k=0;
for( i=0;i<1000;i++)
{
for( j=0;j<1000;i++)
{
for( k=0;k<5;k++);
}
}
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7);
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5); //LED0输出低
GPIO_ResetBits(GPIOA,GPIO_Pin_7);//LED1输出高
delay__ms();
GPIO_SetBits(GPIOA,GPIO_Pin_7|GPIO_Pin_5);
GPIO_ResetBits(GPIOA,GPIO_Pin_6);//LED0输出高
delay__ms();
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
delay__ms();
GPIO_SetBits(GPIOA,GPIO_Pin_5);
}
}
上面的代码就可以完成流水灯。
看到这里,点个赞吧,有什么问题可以直接私信我,我都会解答的