gpt4 book ai didi

c - 在 stm32f103c8t6 Blue Pill 中启用输出端口

转载 作者:行者123 更新时间:2023-12-04 10:13:51 28 4
gpt4 key购买 nike

我正在尝试启用连接到 LED 的 Blue Pill (stm32f103c8t6) 中的 PC13,不确定它是低电平有效还是高电平有效,所以我尝试了两者仍然不起作用。RCC->APB2ENR |= 0x10;用于使能端口 C 中的时钟。
enter image description here
GPIOC->CRH = (GPIOC->CRH & 0xFF0FFFFF) | 0x00100000;用于将端口 C 配置为输出模式和推挽。
enter image description here
GPIOC->ODR &= !(1<<13);用于将 C13 引脚驱动为低电平。
整个代码:

#include "stm32f10x.h"

int main(){
RCC->APB2ENR |= 0x10;
GPIOC->CRH = (GPIOC->CRH & 0xFF0FFFFF) | 0x00100000;
while(1) {
GPIOC->ODR = ~(1<<13);//if it is Active Low
for (int i = 0; i < 1000000; ++i) __asm__("nop");
GPIOC->ODR |= 1<<13; //if it is Active High
for (int i = 0; i < 500000; ++i) __asm__("nop");
}

}

编辑 :
经过一番调查,我发现如果运行调试 session ,代码运行良好,这可能是软件问题吗?或者调试代码设置了我没有设置的东西?正如我所说,我正在使用 uVision 进行编译和烧录。

最佳答案

如果您正在运行 Keil,就像您在评论中所说的那样,那么可以肯定您正在使用 ST HAL。
因此,您应该使用它。

使用它来启用 GPIOC 时钟

__GPIOC_CLK_ENABLE();

听起来您还没有启用另一个时钟。我现在无法弄清楚它是哪一个,但它可能是链条中的一个。 (这可能是因为您使用 APB2ENR 而不是宏启用了时钟)

另一种解决方法是使用 STM32CubeMX ST 证明它是一个多平台工具,可以为多个 IDE 创建基本的初始化项目。

下载并运行它,为您的 MCU 创建一个项目,添加您想要驱动的引脚作为输出并生成一个应该编译和运行的 Keil 项目。如果可行,您可以对 STM32CubeMX 为创建工作代码所采取的步骤进行逆向工程。

您的潜在问题是您尚未启用 reset and run在配置中。因此,在编程之后,需要在新写入的代码运行之前重置电路板。启动调试器就是这样做的。

configuration window with reset and run

此配置位于实用程序-> 设置菜单中。 (忽略红色标记,我无法自己捕获图像,因此是从互联网上获取的)

enter image description here

关于c - 在 stm32f103c8t6 Blue Pill 中启用输出端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61179208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com