我有一台STM32L-Discovery Board,它有一个STM32L152R8微处理器。我总是试图让基本的东西发挥作用。
我看过ST给出的示例(当前的消耗触摸传感器和温度传感器),我认为它们不是用户友好的,有很多库,子进程和中断,这些都是代码真的很难理解。
我试图打开蓝色LED(GPIO PB6),但我无法做到这一点。
我的代码编译正确但对董事会没有任何作用。这是“main.c”的代码。
RCC->AHBRSTR = 0x00000002;
RCC->AHBRSTR = 0x00000000;
RCC->AHBENR = 0x00000002;
GPIOB->MODER = 0x00001000;
GPIOB->OTYPER = 0x00000040;
GPIOB->OSPEEDR = 0x00001000;
GPIOB->PUPDR = 0x00000000;
GPIOB->ODR = 0x00000040;
while(1) {}
我错过了什么吗?我能在某处找到真正基本的例子吗?
提前致谢!
答案 0 :(得分:0)
ST在其网站上提供的标准外围设备库是一个很好的起点。它有关于编程GPIO的示例。请注意,他们的代码绝对可怕,但至少它起作用并且是开始的。
您使用的编译器/调试器是什么?如果您正在使用IAR,那么您可以在步进代码时查看GPIO寄存器。请将GPIO寄存器的值发布到您的问题中,也许我们可以提供帮助。
答案 1 :(得分:0)
更改为“RCC->AHBENR |= 0x00000002;” 这将确保您在不禁用其他所有功能的情况下启用 GPIOB。现有代码将禁用重要的东西,如闪存控制器和所有其他 GPIO。
更改为“GPIOB->MODER = (GPIOB->MODER & 0xFFFFDFFF) | 0x00001000;” 这会将引脚 6 设置为输出,而不会更改任何其他引脚的配置。
更改为“GPIOB->OTYPER |= 0x00000040;” 将输出设置为推挽而非开漏。您稍后的代码尝试将此线设置为高电平,这将不起作用,因为开漏输出将接地或允许该线浮动。推挽输出允许您将线路设置为高电平或低电平。