初学STM32及GPIO入门之流水灯

初学STM32及GPIO入门之流水灯

一.准备工作---建立一个keil工程

STEP1.

打开keil,选择project-new uvision project,建立一个LED工程


STEP2.
在工程文件保存的路径下新建以下文件夹,在官网上或其他渠道下载STM32的3.5版库,将inc 和scr文件夹放入fwlib中。将startup_stm32f10x_hd.s放入asm文件夹中。将库文件放入cmsis中。



STEP3.

在keil中分别新建 【startcode】【user】【fwlib】【cmsis】四个组,再按照下图所示将C文件加入组中。这里要注意的是组里面添加的都是汇编文件和C文件,头文件不需要添加。



STEP4.

为了更好的理清各项文件,我们再设置一下各项输出文件的保存路径

1.设置编译后输出文件的保存路径

2.设置链接输出文件



STEP5.

此时我们若直接编译C文件将会出现很多错误,其原因是 编译器在编译时搜索的默认库一STM32官方驱动的头文件,与inc的差不多,编译至我们的新版本库时存在不兼容,故我们需要屏蔽掉编译器默认库的搜索路径。


添加USE_STDPERIPH_DRIVER:为了使用ST官方库

添加STM32F10X_HD:可以使用库文件里面为大容量定义的寄存器

(补充:芯片是小或中容量的时候宏要换成STM32F10X_LD或STMF10X_MD)


完成!


二.编写程序

程序要求---三个LED灯依次亮后熄灭

完整程序如下

#include "stm32f10x.h"
#define DELAY_TIME   0x3FFFFF

void Delay(__IO uint32_t nCount)
{
   for(; nCount != 0; nCount--) ;
}

int main(void)
{
	GPIO_InitTypeDef   GPIO_InitStructure;                 	/*定义一个GPIO_InitTypeDef类型的结构体*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	                    /*开启GPIO的外设时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_5;	       /*选择一控制的GPIO引脚*/    
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                          /*设置引脚模式为通用推挽输出*/
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                         /*设置引脚速率为50MHz*/
	GPIO_Init(GPIOB,&GPIO_InitStructure);	                                   /*调用库函数,初始化GPIOC*/
	GPIO_Init(GPIOD, &GPIO_InitStructure);  
 
  while(1)     /*延时装置*/
  {
		  GPIO_SetBits(GPIOB, GPIO_Pin_5);
		  GPIO_ResetBits(GPIOD, GPIO_Pin_6);
		  GPIO_ResetBits(GPIOD, GPIO_Pin_3);
		  Delay(DELAY_TIME);
		
	          GPIO_SetBits(GPIOD, GPIO_Pin_6);
		  GPIO_ResetBits(GPIOB, GPIO_Pin_5);
		  GPIO_ResetBits(GPIOD, GPIO_Pin_3);
		  Delay(DELAY_TIME);	
		
		  GPIO_SetBits(GPIOD, GPIO_Pin_3);
		  GPIO_ResetBits(GPIOB, GPIO_Pin_5);
		  GPIO_ResetBits(GPIOD, GPIO_Pin_6);
		  Delay(DELAY_TIME);	
  }
}
三.实操过程中出现的问题:

1.三个LED灯分别来自于两个不同的组,在编程过程中时常只记得编写一个组,导致只有一个LED灯保存常量状态。

 解决方法:仔细检查程序,分析出现问题的原因。


  • 7
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值