历史上的今天
今天是:2024年11月04日(星期一)
2021年11月04日 | STM32F103ZET6 —— GPIO
2021-11-04 来源:eefocus
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;
}
史海拾趣
|
六七月份,太阳能产业新闻特别多,有日本太阳能飞船遨游太空,也有瑞士太阳能飞机实现夜航。阿牛哥看看太阳能应用,以前最多的是太阳能灶,太阳能热水器和太阳能计算器,现在是太阳能发电。关键是要稳定,还有并网发电价格机制。阿牛哥读读古书, ...… 查看全部问答> |
|
有关checksum的问题,不知道原因,还烦请高手指点一下,多谢了. 小弟不才,学习checksum算法的时候,对如下数据始终无法校验成功,麻烦各位大哥帮忙指点下。 对两段报文,用相同的机制,一个校验成功,一个失败,但这个两个包都是对的,我不知道原因,麻烦哥指点一下。多谢了。 static u8 packet1[] = { & ...… 查看全部问答> |
|
高速PCB布线有很多方面的问题,关于这个题目已有人撰写了大量的文献。本文主要从实践的角度来探讨高速电路的布线问题。主要目的在于帮助新用户当设计高速电路PCB布线时对需要考虑的多种不同问题引起注意。 … 查看全部问答> |
|
这几天在整理运放电路,发现自己忘得七七八八了。 其中还因为记错了,惹出不少麻烦。 比如,最基本的 反相运放电路。 看下图。 左边是 正常的负反馈 反相运放电路,右边 则是因为我无意记错,画出来的一个正反馈电路。… 查看全部问答> |




