正点原子 13 LED灯实验
2017-01-05 23:08
232 查看
GPIO输出方式: 选推挽输出,因为它可以实现强上拉下拉,(开漏输出需要外部电阻来决定,不合适).
需要的头文件:stm32f4xx_gpio.h
源文件:stm32f4xx_gpio.c
注意:外设(包括GPIO)在使用之前,几乎都要先使能对应的时钟。
重要函数:
1个初始化函数:
void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);
作用:初始化一个或者多个IO口(同一组)的工作模式,输出类型,速度以及上下拉方式。也就是一组IO口的
4个配置寄存器。GPIOx->MODER,GPIOx->OSPEEDR,GPIOx->OTYPER,GPIOx->PUPDR)
2个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef*GPIOx);
2个读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);
4个设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin,BitActionBitVal);
void GPIO_Write(GPIO_TypeDef*GPIOx,
uint16_tPortVal);
步骤:
1.使能IO的时钟,调用函数RCC_AHB1PeriphClockCmd();
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能IO组A
2.初始化IO口模式。调用函数GPIO_Init();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; //定义IO口
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //定义为输出
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //定义为推挽 GPIO_OType_OD开漏
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //定义为高电平
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //定义速度
GPIO_Init(GPIOA,&GPIO_InitStruct);//初始化IO组里的端口
3.操作IO口,输出高低电平
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7); //置1 高电平
GPIO_ResetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7); //置0 低电平
需要的头文件:stm32f4xx_gpio.h
源文件:stm32f4xx_gpio.c
注意:外设(包括GPIO)在使用之前,几乎都要先使能对应的时钟。
重要函数:
1个初始化函数:
void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);
作用:初始化一个或者多个IO口(同一组)的工作模式,输出类型,速度以及上下拉方式。也就是一组IO口的
4个配置寄存器。GPIOx->MODER,GPIOx->OSPEEDR,GPIOx->OTYPER,GPIOx->PUPDR)
2个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef*GPIOx);
2个读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);
4个设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef*GPIOx,
uint16_tGPIO_Pin,BitActionBitVal);
void GPIO_Write(GPIO_TypeDef*GPIOx,
uint16_tPortVal);
步骤:
1.使能IO的时钟,调用函数RCC_AHB1PeriphClockCmd();
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能IO组A
2.初始化IO口模式。调用函数GPIO_Init();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; //定义IO口
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //定义为输出
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //定义为推挽 GPIO_OType_OD开漏
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //定义为高电平
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //定义速度
GPIO_Init(GPIOA,&GPIO_InitStruct);//初始化IO组里的端口
3.操作IO口,输出高低电平
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7); //置1 高电平
GPIO_ResetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7); //置0 低电平
相关文章推荐
- STM32串口采样与仪表步进电机控制程序(主程序与串口程序,需用正点原子定时器中断实验程序模板)
- STM32正点原子MINI板——学习1实验平台简介
- (正点原子例程)wifi实验(7.16)
- 正点原子F407/103,接入机智云,点亮LED
- 嵌入式S3C2440开发板LED灯和按键(去抖)驱动实验
- 实验13 简单FTP 程序设计
- 实验项目2-13:两个有序序列的中位数
- 3.1.第九个实验--LED点阵数据手册和原理图分析
- 个人项目实验报告 加减乘除测试 王倩倩 201303014004 计科高职13-1
- 02-ZYNQ学习(逻辑篇)之FPGA LED控制实验
- 国嵌实验:key_interrupt(按键中断),采用中断方式当KEY1 按下时,LED亮灭一次
- 实验1:small rtos51-------led控制
- 51单片机学习笔记【一】——LED灯实验
- 在Arduino平台点亮LED灯实验
- 【iCore4 双核心板_ARM】例程四:USART实验——通过命令控制LED
- (正点原子)wifi例程(7.20)
- CC2530基础实验之采集光照模拟量控制LED状态
- Packet Tracer 5.0建构CCNA实验攻略(13)――帧中继Frame Relay
- 蓝牙ble 从LED实验来学习CC2541 IO口配置
- 正点原子的输入捕获程序解读