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 |= (<<);
//控制io口输出
*(unsigned int *)0x40020400 &= 0x00000000;
*(unsigned int *)0x40020400 |= (<<); *(unsigned int *)0x40020404 &= 0x00000000; *(unsigned int *)0x40020408 &= 0x00000000;
*(unsigned int *)0x40020408 |= (<<); *(unsigned int *)0x4002040C &= 0x00000000;
*(unsigned int *)0x4002040C |= (<<); //ODR寄存器
*(unsigned int *)0x40020414 &=~(<<); } void systeminit(void) //骗过编译器不会报错
{ }
STM32F4 阿波罗寄存器点亮LED灯的更多相关文章
- STM32F4 阿波罗寄存器 进阶版LED灯
上一节通过使用操作地址的方式进行了寄存器的操作,接下来通过两个部分,实现进阶版的操作寄存器(将寄存器的地址进行命名,然后使用名字进行调用 比如商场的A座5楼345号为卖玩具的,我们可以定义地址为sh ...
- 第7章 使用寄存器点亮LED灯
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- stm32F103C8T6通过写寄存器点亮LED灯
因为我写寄存器的操作不太熟练,所以最近腾出时间学习了一下怎么写寄存器,现在把我的经验贴出来,如有不足请指正 我使用的板子是stm32F103C8T6(也就是最常用的板子),现在要通过写GPIO的寄存器 ...
- C语言版——点亮LED灯,深入到栈
在上一篇进行了汇编语言的编写之后,我们采用C语言来编写程序,毕竟C语言才是我们使用最多的语言. 仅仅是点亮LED灯显然太过于简单,我们需要分析最后的反汇编,了解函数调用栈,深入C语言骨髓去分析代码,并 ...
- 使用寄存器点亮LED——编程实战
stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...
- JZ2440开发板:用按键点亮LED灯(学习笔记)
本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读. 想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作.阅读JZ2440的原理图,可以 ...
- Raspberry PI 系列 —— 裸机点亮LED灯
Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ...
- 使用寄存器点亮LED(第2节)—寄存器映射代码讲解
// 打开 GPIOB 端口的时钟 *( unsigned int * )0x40021018|= ( 1 << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M *( un ...
随机推荐
- Python——标识符的命名规则
01 Python语言的特点 python的语言特点有很多,我们这里只讲一点,python是一门面向对象的语言,即一切皆对象(Linux中有一句是:一切皆文件),括号内的只是打个比方,不懂也没事,就是 ...
- [LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式
目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...
- mailx加163邮箱发邮件
mailx加163邮箱发邮件 参考:https://www.cnblogs.com/myvic/p/9579954.html 配置 $ yum install mailx -y $ vim /etc/ ...
- 对于 TCP 三次握手的理解
假设名叫 A 和 B 的两个人要进行通信,那么他们两人之间,首先要确保通信顺畅. 而确保通信顺畅,就要从 3 个维度,确定 8 个能力 3 个维度分别是: 1.人知道(A 知道.B 知道) 2.人(A ...
- PHP 向数组头部插入数据
PHP 向数组头部插入数据 函数: array_unshift() 示例: $s = array('a' => 0, 'b' => 3); array_unshift($s, '5'); ...
- pat 1011 World Cup Betting(20 分)
1011 World Cup Betting(20 分) With the 2010 FIFA World Cup running, football fans the world over were ...
- nyoj 86-找球号(一)二分法
86-找球号(一) 内存限制:64MB 时间限制:3000ms 特判: No 通过数:14 提交数:48 难度:3 题目描述: 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数 ...
- requests保存图片
1.创建07_save_jpg.py文件 import requests #发送请求respone = requests.get("https://www.baidu.com/img/bd_ ...
- 【Java】final修饰符的使用
final修饰符的使用 1.修饰类: final修饰的类不能被继承,final修饰的类里面的方法都是(隐式)final方法 2.修饰方法: final修饰的方法不能被重写 3.修饰变量(被修饰的变量一 ...
- 领扣(LeetCode)各位相加 个人题解
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所 ...