STM32F10X入门——流水灯
主要的库函数位置/core_cm32.c/stdin.h 中定义了字符型
stm32f10x.h>stm32f10x_conf.h 中定义了引用的外设头文件
库文件之间的依赖调用关系 @./~.PNG
stm32f10x.h查看地址映射
比如 define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
GPIO使用步骤
配置寄存器:选定 GPIO 的特定功能 ,最基本的如:选择作为输入还是输出端口。
数据寄存器:保存了 GPIO 的输入电平或将要输出的电平
位控制寄存器:设置某引脚数据为 1 或 0 ,控制输出电平
锁定寄存器:设置某锁定引脚后,就不能修改其配置
一般使用推挽输出模式
GPIO_TyPe_Def结构体中定义了GPIO_BASED的偏移量
RCC等时钟相关
SYSCLK为系统时钟
2.
void LED_GPIO_Config(void){
/*定义一个 GPIO_InitTypeDef 类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*开启 GPIOC 的外设时钟,emable即使能*/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
/*选择要控制的 GPIOC 引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 ;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率为 70MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_70MHz;
/*调用库函数,初始化 GPIOC*/
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* 初始关闭所有 led 灯,Reset 为低电平*/
GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);}
.h文件编写规范
以 led.h 文件为例
条件编译,防止头文件重复,最好加上
#ifndef __LED_H
#define __LED_H
#endif
引用头文件 #include "stm32f10x.h"
定义宏
#define ON0
#define OFF 1
定义带参宏以及声明对应 led.c 中的函数
#define LED1(a) if (a)\
GPIO_SetBits(GPIOC,GPIO_Pin_3);\
else \
GPIO_ResetBits(GPIOC,GPIO_Pin_3)
void LED_GPIO_Config(void);
main文件编写
头文件引用
#include "stm32f10x.h"
#include "led.h"
声明后续函数
void Delay(__IO u32 nCount);
main函数编写
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
while (1)
{
LED1( ON ); // 亮
Delay(0x0FFFEF);
LED1( OFF ); // 灭
LED2( ON );
Delay(0x0FFFEF);
LED2( OFF );
}
}
delay函数编写
void Delay(__IO u32 nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
页:
[1]