STM32手把手点灯学习笔记(大疆robomasterA板)

首先

建议大家先在b站看正点原子或者野火的stm32视频,本贴仅适用于刚刚接触stm32并且使用大疆robomasterA型开发板的同学,我会分享实现的代码和学习的方法,供大家后续学习A板时可以参考,帖主也是正在学习,欢迎大家一起讨论

此教程建立在你会使用keil5,

一:如何使用A板原理图

1.1 下载A板原理图

虽然说正点原子和野火的开发板都是stm32,芯片是一样的,但IO口和外设有一些是不一样的,所以大家需要配合robomasterA板的原理图学习

下载在链接如下:大疆A板

1.2 查找A板中的灯

开始学的时候看正点原子的代码点灯点不起来,后来发现这两个板子灯的位置都不一样肯定点不起来啊(悲)

首先打开原理图

第一次看,看着眼花缭乱对对吧。这时候使用Ctrl+f启用搜索,搜索led,就可以找到A板led的位置了,不仅是LED_G和LED_G(黄色标记),只要是带二极管的都可以点亮(红色圈)

 以LED_G为例,后面的(PF14)是GPIO14的意思,对应到点灯程序中,要开启GPIO14对应的时钟和Pin口(详情看后面的代码)

二:A板代码

led.h代码

//ifndef如果看不懂建议先看正点或者野火教程
//ifndef _LED_H
//define _LED_H
#引库我不知道有没有引多,如果发现sys没用就可以不用
#include "stm32f4xx.h" 
#include "sys.h"



//这里我参考的是野火的stm32代码,使用宏定义#define便于后期移植,当然你也可以不宏定义
//对应上图的一排的二极管,我写的是开GPIOG中1到8的Pin口
#define LED_GPIO_PIN      GPIO_Pin_8 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6 | GPIO_Pin_7
#define LED_GPIO_PORT     GPIOG   
#define LED_GPIO_CLOCK    RCC_AHB1Periph_GPIOG  




//这个是在led.c文件中需要使用的Init文件,需要现在led.h中先写
void LED_Init(void);



#endif

led.c

//包含前面定义的led.h
#include "led.h"

 //Init在led.h中提过,需要在led.c中编写

//下面的内容除了注释内容外其他看不懂可以看野火的教程,其他都是一样的
void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
 
	RCC_AHB1PeriphClockCmd(LED_GPIO_CLOCK, ENABLE);//打开在led.h对应时钟

    GPIO_InitStructure.GPIO_Pin =LED_GPIO_PIN;// 打开在led.h中对应Pin口(A板led的pin口)
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
	GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure);
}

main.c

#include "main.h"
#include "delay.h"
#include "stdio.h"
#include "led.h"



	
	

int main(void)
{
	delay_init(168);//初始化delay,delay函数自带有
    LED_Init();//初始化LED,在led.c中写的
   while(1)
	{
        GPIO_SetBits(GPIOG,GPIO_Pin_1);//Set为高电平,在这里是关灯
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_1);//Reset为高电平,在这里是关灯
		delay_ms(200);
		GPIO_SetBits(GPIOG,GPIO_Pin_2);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_2);
		delay_ms(200);
		GPIO_SetBits(GPIOG,GPIO_Pin_3);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_3);
		delay_ms(200);	
		GPIO_SetBits(GPIOG,GPIO_Pin_4);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_4);
		delay_ms(200);		
		GPIO_SetBits(GPIOG,GPIO_Pin_5);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_5);
		delay_ms(200);	
		GPIO_SetBits(GPIOG,GPIO_Pin_6);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_6);
		delay_ms(200);		
		GPIO_SetBits(GPIOG,GPIO_Pin_7);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_7);
		delay_ms(200);	
		GPIO_SetBits(GPIOG,GPIO_Pin_8);
		delay_ms(200);
		GPIO_ResetBits(GPIOG,GPIO_Pin_8);
		delay_ms(200);
	}


}

我使用的是st-link进行烧录,烧录后即可实现跑马灯效果

感觉帖子不错的话欢迎点赞噢

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
我很高兴为您解答有关STM32F407学习笔记的问题。根据引用和引用中的内容,学习STM32F407可以使用CubeMax和Keil这两款软件。CubeMax是一个方便易用的工具,可以帮助您进行单片机的开发和编程。Keil是一款集成开发环境(IDE),可以用于编写、调试和下载嵌入式软件。 在学习过程中,您可以根据引用的建议,收藏您经常使用的芯片,例如STM32F407,以便下次使用更加方便。 对于学习STM32F407的详细内容和步骤,我建议您参考引用中提到的PPT和引用中提到的学习笔记。这些资料可能包含了关于STM32F407的基本知识、GPIO和按键的使用等内容。您可以根据这些资料逐步学习和实践。 在学习过程中,如果您遇到问题或有任何疑问,可以向您的学长们求助或在实验室中寻求帮助。他们可以提供补充的知识和指导,并纠正您可能存在的错误。 最后,我希望您的STM32F407学习之旅能够顺利进行,并祝您在电赛国赛中取得优异的成绩!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [STM32F407学习笔记(1)基于hal库,CubeMX以及keil5的基本使用。](https://blog.csdn.net/qq_63466056/article/details/127707521)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值