LED流水灯程序初始化流程
//1.定义结构体变量
GPIO_InitTypeDef GPIO_InitStructure;
//2.开启GPIOC的外部时钟,不同的外设开启不同的时钟,IO口复用时两个时钟都要开启。stmf10x_rcc.h
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//3.设置要控制的GPIO管脚
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
//4.设置管脚模式,推挽输出
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
//5.设置GPIOC的引脚速度为50MHz
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//6.调用库函数初始化GPIOC,初始化IO口
GPIO_Init(GPIOC,&GPIO_InitStructure);
//7.关闭所有LED等灯,GPIO_ResetBits(,);GPIO_SetBits(,);置位和清0函数
GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);
寄存器方式
GPIO_TypeDef * GPIOx;
GPI0x=GPIOA;
//开启GPIOA外设时钟
GPIOx->APB2ENR|=1<<2;
//配置GPIOA.3 4 5为推挽输出50MHZ
GPIOx->CRL|=0X03<<12|0X03<<16|0X03<<20;
//GPIOA.3 4 5输出0xff。
GPIOx->ODR=0XFF;
LED.H
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
#define LED1(a) if(a) \
GPIO_SetBits(GPIOC,GPIO_Pin_3);\
else \
GPIO_ResetBits(GPIOC,GPIO_Pin_3);
#define LED2(a) if(a) \
GPIO_SetBits(GPIOC,GPIO_Pin_4);\
else \
GPIO_ResetBits(GPIOC,GPIO_Pin_4);
#define LED3(a) if(a) \
GPIO_SetBits(GPIOC,GPIO_Pin_5);\
else \
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
void GPIO_Config(void);
#endif
"\"为行连接符,表示本行与上一行属于同一代码行.
端口设置可以使用“sys.h“下的PXout(n)=0/1;PXin(n);来进行设置
http://www.makeru.com.cn/live/4034_2561.html?s=165154
基于STM32物联网项目WebServer+Zigbee组网开发
http://www.makeru.com.cn/live/4034_2435.html?s=165154
学了这么久,物联网操作系统你整明白没?
http://www.makeru.com.cn/live/4034_2420.html?s=165154
万物智联,物联网终端设备如何交流?
(stm32 USART串口应用)