c/c++语言开发共享STM32F4 阿波罗寄存器点亮LED灯

学习步骤: 学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉、推挽、100M,最后定义B口的1引脚为低电平就可以实现点亮了。 这一部分内容耗时有点长,最 …

  • 学习步骤:

 

使用寄存器点亮led灯,需要进行如下的步骤,led灯属于外设部分,首先需要开启外设的时钟使能,然后led灯是pb1口,(芯片是正点原子的阿波罗),接着定义gpiob口的输出模式,为上拉、推挽、100m,最后定义b口的1引脚为低电平就可以实现点亮了。

 

这一部分内容耗时有点长,最后发现关键原因在于调试的时候未按复位键,这个原因我也是很无语啊,怪不得在之前下载完程序,第二天早上去开电源的时候,一个灯亮了,原来程序写的是对的呀~~~

 

  • 错误与总结:

错误就是按键问题,下载完程序我一看灯没亮,于是就继续修改程序,修改了好几个版本了,可能之前的也是对的吧。此外,过程之中也对代码做了很多修改与检查,由于寄存器的地址需要自己查找,所有有时候会写错,不过我应该是看了好多遍,现在印象很深刻了呢。首先确保时钟使能开启的是ahb1,然后对gpiob口进行定义,初始地址与偏移地址一定要加对哦。

中间有很多c语言代码的位操作,现在补充一下:

置位 |=     清零 =&= ~

a>>b 指的是a这个数向右移b位  a<<b 指的是a这个数向左移b位

需要修改下魔术棒之中target的晶振 mini板为8 ,阿波罗为12

  • 代码:

#include "stm32f429xx.h"    int main(void)  {  //使能时钟ahb1      *(unsigned int *)0x40023830 |= (1<<1);  //控制io口输出      *(unsigned int *)0x40020400 &= 0x00000000;      *(unsigned int *)0x40020400 |= (1<<2);            *(unsigned int *)0x40020404 &= 0x00000000;            *(unsigned int *)0x40020408 &= 0x00000000;      *(unsigned int *)0x40020408 |= (1<<3);            *(unsigned int *)0x4002040c &= 0x00000000;      *(unsigned int *)0x4002040c |= (1<<2);      //odr寄存器      *(unsigned int *)0x40020414 &=~(1<<1);        }      void systeminit(void) //骗过编译器不会报错  {      }

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602194.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐