关于STM32学习分享
第一章 GPIO输入输出控制前言
单片机的输出和输入来自于IO口的控制,设置IO输入输出模式获取数据或者控制外部。
一、GPIO输入输出模式类型
GPIO_Mode_AIN = 0x0, // 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, // 浮空输入
GPIO_Mode_IPD = 0x28, // 下拉输入
GPIO_Mode_IPU = 0x48, // 上拉输入
GPIO_Mode_Out_OD = 0x14, // 开漏输出
GPIO_Mode_Out_PP = 0x10, // 推挽输出
GPIO_Mode_AF_OD = 0x1C, // 复用开漏输出
GPIO_Mode_AF_PP = 0x18 // 复用推挽输出
二、代码
1.led.c
代码如下(示例):
#include "led.h"
/**
* @brief 初始化控制LED的IO
* @param 无
* @retval 无
*/
void LED_GPIO_Config(void)
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*开启LED相关的GPIO外设时钟*/
RCC_APB2PeriphClockCmd( LED1_GPIO_CLK , ENABLE);
/*选择要控制的GPIO引脚*/
GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率为50MHz*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*调用库函数,初始化GPIO*/
GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
/* 关闭所有led灯*/
GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
}
2.led.h
代码如下(示例):
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
/* 定义LED连接的GPIO端口, 用户只需要修改下面的代码即可改变控制的LED引脚 */
#define LED1_GPIO_PORT GPIOB /* GPIO端口 */
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED1_GPIO_PIN GPIO_Pin_5 /* 连接到SCL时钟线的GPIO */
void LED_GPIO_Config(void);
#endif /* __LED_H */
3.main.c
代码如下(示例):
#include “stm32f10x.h”
#include “led.h”
#define SOFT_DELAY Delay(0x0FFFFF)
void Delay(__IO u32 nCount);
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
while (1)
{
/*灯亮*/
GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);;
SOFT_DELAY;
/* 灯灭*/
GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
}
}
void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount–);
}
该处使用的url网络请求的数据。
@https://blog.csdn.net/FuYYZ/article/details/114342802
总结
希望能给你有所收获!本文章知识点的学习来自野火教程,更多的知识在野火平台值得初学者去看看!一定有收获的!谢谢!