002_飞控主板_流水灯

眼巴巴瞅了好久的电路图。大致搞明白了
今天一整天就查资料,就晚上写一段代码

  • led电路
    在这里插入图片描述
    在这里插入图片描述
    四个led对应的io分别是PE0,PE1,PE2,PE3.
    点亮led,需要设置io成,通用输出,推挽输出,低电平
  • 代码

led.c

#include "LED.h"




void led_init(void)
{
	
	//Pe0~4 初始化
	RCC->AHB1ENR|=1<<4;  //使能PORTF的时钟
	GPIO_Set(GPIOE,PIN0|PIN1|PIN2|PIN3,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);

}



led.h

#ifndef __LED_H
#define __LED_H	 
#include "sys.h"

#define LED0 PEout(0)
#define LED1 PEout(1)
#define LED2 PEout(2)
#define LED3 PEout(3)
/**led初始化**/
void led_init(void);



#endif



main.c

#include "sys.h"
#include "usart.h" 
#include "delay.h" 
#include  "LED.h"
//ALIENTEK 探索者STM32F407开发板 实验0
//新建工程实验  
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司

int main(void)
{ 
	Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
	delay_init(168);		//初始化延时函数
	
	led_init();
	while(1)
	{
  LED0=0; 
  LED1=1;   
  LED2=1;   
  LED3=1;   	
	delay_ms(500);
	LED0=1; 
  LED1=0;   
  LED2=1;   
  LED3=1;   	
	delay_ms(500);
  LED0=1; 
  LED1=1;   
  LED2=0;   
  LED3=1;   	
	delay_ms(500);
  LED0=1; 
  LED1=1;   
  LED2=1;   
  LED3=0;   	
	delay_ms(500);
		
	}
}

  • 函数说明文件

io口设置,直接调用GPIO_Set()函数了,函数原型如下。

//GPIO通用设置 
//GPIOx:GPIOA~GPIOI.
//BITx:0X0000~0XFFFF,位设置,每个位代表一个IO,第0位代表Px0,第1位代表Px1,依次类推.比如0X0101,代表同时设置Px0和Px8.
//MODE:0~3;模式选择,0,输入(系统复位默认状态);1,普通输出;2,复用功能;3,模拟输入.
//OTYPE:0/1;输出类型选择,0,推挽输出;1,开漏输出.
//OSPEED:0~3;输出速度设置,0,2Mhz;1,25Mhz;2,50Mhz;3,100Mh. 
//PUPD:0~3:上下拉设置,0,不带上下拉;1,上拉;2,下拉;3,保留.
//注意:在输入模式(普通输入/模拟输入)下,OTYPE和OSPEED参数无效!!
void GPIO_Set(GPIO_TypeDef* GPIOx,u32 BITx,u32 MODE,u32 OTYPE,u32 OSPEED,u32 PUPD)
{  
	u32 pinpos=0,pos=0,curpin=0;
	for(pinpos=0;pinpos<16;pinpos++)
	{
		pos=1<<pinpos;	//一个个位检查 
		curpin=BITx&pos;//检查引脚是否要设置
		if(curpin==pos)	//需要设置
		{
			GPIOx->MODER&=~(3<<(pinpos*2));	//先清除原来的设置
			GPIOx->MODER|=MODE<<(pinpos*2);	//设置新的模式 
			if((MODE==0X01)||(MODE==0X02))	//如果是输出模式/复用功能模式
			{  
				GPIOx->OSPEEDR&=~(3<<(pinpos*2));	//清除原来的设置
				GPIOx->OSPEEDR|=(OSPEED<<(pinpos*2));//设置新的速度值  
				GPIOx->OTYPER&=~(1<<pinpos) ;		//清除原来的设置
				GPIOx->OTYPER|=OTYPE<<pinpos;		//设置新的输出模式
			}  
			GPIOx->PUPDR&=~(3<<(pinpos*2));	//先清除原来的设置
			GPIOx->PUPDR|=PUPD<<(pinpos*2);	//设置新的上下拉
		}
	}
} 
  • 工程文件:直接用正点原子,探索者的工程模板就可以直接使用。
  • 流水灯,漂亮
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可能感兴趣的项目设计:https://www.cirmall.com/circuit/3399/detail?3(新唐M452设计的四轴飞控板电路原理图、PCB、源代码、解决方案和APP) 新唐飞控系统组成: 概述: 此套件包含了飞控主板、摇控手柄、2.4G RF module、分电板外加 Nu-Link-Me 仿真器,使用新唐 ARM:registered: Cortex:registered:-M4 开发板;本套件拥有完整姿态运算数据库 (AHRS Library) ,让玩家简易上手,不须钻研传感器姿态运算的数学问题,更容易专注于飞行控制以及飞行应用的开发。搭配机架、电变、马达、螺旋桨及背载锂电池即可自由飞行。 本套件支持失控保护(自动降落),支持定高(气压计)及无头模式(电子罗盘),可使用 2.4G 专用遥控模块或是市售通用发射机接收机,且提供使用者依照各式大小轴距机架进而自行调适飞行姿态PID(Proportional Integrative Derivative) 及校准传感器。 飞控硬件框架: 新塘飞控系统方案特点: 一站解决:本套件含 Cortex:registered:-M4 为核心的主控板和 2.4G 无线传输遥控板,装机、上电后无需设定。 独家数据库:提供完整姿态运算数据库 (AHRS Library) ,玩家可以快速自行设定。 弹性尺寸:默认支持的套件配置 (250mm) 外,玩家也可自行挑选大轴距 (450mm) 机架与电机,自行调整飞控板PID,即可驾驭不同配置的飞行器。 搭配 MPU6500 实现 6 轴飞行姿势控制。 Nuvoton AHRS 运算库架构: 全套设计资料包括整个硬件设计,程序源码&开发工具,同时包括文档详细说明。 整个硬件设计截图,用PADS9.5打开: 程序源码下载:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值