设为首页 加入收藏

TOP

STM32F4 阿波罗寄存器点亮LED灯
2019-09-03 03:37:21 】 浏览:26
Tags:STM32F4 阿波罗 寄存器 点亮 LED

  • 学习步骤:

 

使用寄存器点亮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) //骗过编译器不会报错
{


}

 


STM32F4 阿波罗寄存器点亮LED灯 https://www.cppentry.com/bencandy.php?fid=45&id=249380

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据结构C线性表现实 下一篇关于C语言中整数范围的一些解释