STM32 的 GPIO 可以由软件配置成为几种不同的模式,每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问:
A. 芯片侧:
1. 输入:
2. 输出:
B. 硬件侧:
对应的单板,有两个GPIO连接到LED上:
使用的是 GPIO 的 Port G 的 Pin13 和 Pin14 脚
C. 代码侧:
配置上述两个 GPIO 工作需要的步骤如下:
1. 使能对应的 GPIO_G 的时钟
2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,配置口线翻转速度50M
3. 配置完成后,设置端口的输出为1/0即可控制 GPIO 的输出。
1. 时钟设置:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG , ENABLE); // 此处 RCC_APB2Periph_GPIOG 为 (0x01 << 8)
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
RCC->APB2ENR |= RCC_APB2Periph;
}
else
{
RCC->APB2ENR &= ~RCC_APB2Periph;
}
}
2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,50M速度
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOG, &GPIO_InitStructure);
3. 配置输出:
STM32 配置 GPIO 的输出1/0,提供了多种方式,有端口直接写入1/0的寄存器(GPIOx_ODR),也有专门设置 1 值的寄存器(GPIOx_BSRR),同样有专用用于设置 0 值的寄存器(GPIOx_BRR)。可以随意使用:
#define LED1_ON GPIO_SetBits(GPIOG, GPIO_Pin_13);
#define LED1_OFF GPIO_ResetBits(GPIOG, GPIO_Pin_13);
#define LED2_ON GPIO_SetBits(GPIOG, GPIO_Pin_14);
#define LED2_OFF GPIO_ResetBits(GPIOG, GPIO_Pin_14);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BSRR = GPIO_Pin;
}
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BRR = GPIO_Pin;
}
上一篇:STM32F103ZET6 — 端口Remap
下一篇:STM32F103ZET6 时钟(2)—— 代码篇
推荐阅读最新更新时间:2024-11-13 08:13
设计资源 培训 开发板 精华推荐
- NCL30388LED1GEVB:NCL30388 演示板
- 使用 NXP Semiconductors 的 OL2381 的参考设计
- 使用符合 EN50121-3-2 标准的带有 EMC 滤波的 RP40-2415DFR DC/DC 转换器的典型应用(单输出)
- LT6656AIS6-3.3 的典型应用,用于基本连接的 3.3V 电压基准
- STM32H753I-EVAL2,带有 STM32H753XI MCU 的评估板
- DC1953A,使用 LTC3374EUK 八通道并行同步降压稳压器的演示板,适用于单节电池应用
- TWR-K20D50M,Kinetis K20 50 MHz 塔式系统模块
- 高频焊台+热风枪的主板板
- OP113ESZ 假接地发生器的典型应用
- 【ART-Pi】3D打印机扩展板+600698A