51单片机点亮一个小灯

          #include <rge52.h>

           sbit LED = P0^

          void main(void)
{
P0 = 0XFE; // 总线操作 sfr P0 0X80 LED = ; // 位操作
}

STM32中

STM32通过一个寄存器控制电平的输出ODR  ;CRL CRH实现在端口的配置(用绝地地址,目前我们没有寄存器映射,上篇文章有写。)

配置PC2使LED点亮  下图为GPIOX_CRL的配置说明

         (四位控制一个GPIOx的端口我们要控制PC2也就是GBIOC的第二个引脚,故要配置CNF2和MODE2  配置为00 01 (00推挽输出)(01速度10MHZ))

(对于GPIOC的时钟,只要打开4位置即可)

下面我们来算一下GPIOC_CRL和GPIOC_ODR以及所对应时钟(RCC_APB2ENR)的内存地址(STM32中文参考手册)

1.在存储器和总线架构中我们找到存储器映像 0x4001 1000 - 0x4001 13FF  GPIO端口C    0x4002 1000 - 0x4002 13FF   复位和时钟控制(RCC)

2.在RCC寄存器描述中-> APB2外设时钟使能寄存器(RCC_APB2ENR) 可知道他相对于RCC的偏移地址位 0x18

3.在通用和复用功能I/O(GPIO/AFIO)中,端口配置低寄存器(GPIOx_CRL) (x=A..E) 的偏移地址为0x00 端口输出数据寄存器(GPIOx_ODR) (x=A..E) 的偏移地址为0x0C
4.这样我们可以算出

GPIOC_CRL 的地址为:0x4001 1000+0x00=0x4001 1000;

GPIOC_ODR的地址为:0x4001 1000+ 0x0C=0x4001 100c ;

RCC_APB2ENR的地址为:0x4002 1000+0x18 =0x4002 1018;

项目目录:

main函数内容为:

       // 打开 GPIOB 端口的时钟
*( unsigned int * )0x40021018|= ( << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M

*( unsigned int * )0x40011000 &=~ ( 0x0f << (4*2) );//GPIOC IO 4位清空
         *( unsigned int * )0x40011000 |= ( 1 << (4*2) );// 通用推挽输出,速度为10M

      // 控制 ODR 寄存器
*( unsigned int * )0x4001100c &= ~(1<<2);//点亮
//*( unsigned int * )0x4001100c |= (1<<2);//熄灭

使用内存地址点亮LED—跟51单片机一样写代码教学(初步入门)的更多相关文章

  1. 亮瞎你狗眼的写代码体验狂拽酷炫效果 activate-power-mode

    年末了,整理一些收藏的资料,没想到发现一个敲代码的装逼神器; 话不多说上图 我是用idea装的,其他编辑器请自行查找 Preferences -> Plugins -> Install p ...

  2. 使用寄存器点亮LED(第2节)—寄存器映射代码讲解

    // 打开 GPIOB 端口的时钟 *( unsigned int * )0x40021018|= ( 1 << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M *( un ...

  3. Arduino 极速入门系列–1 点亮 LED

    本篇内容为,使用 Arduino 点亮 LED 的做法示范.很简单的一个入门示范.我们让 LED 闪. 本篇使用到的工具和材料 Arduino Mini Pro 1 PCS Mini USB 数据线 ...

  4. 第二章之S5PV210在BL1中点亮LED灯

    1,u-boot中第一个入口在./arch/arm/cpu/armv7/start.S 翻到153行:如下图 前面都是进行一些基本设置,不用管. cpu_init_cp15设置协处理器, cpu_in ...

  5. 51单片机和Arduino—闪烁灯实现

        技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程   概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做 ...

  6. 2017.11.18 手把手教你学51单片机-点亮LED

    In Doing We Learning 在操作中学习.如果只是光看教程,没有实际的操作,对编程语言的理解很空泛,所以决定从单片机中学习C语言. #include<reg52.h>     ...

  7. 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯

    关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...

  8. 51单片机---点亮一个LED灯

    1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; ...

  9. 第7章 使用寄存器点亮LED灯

    第7章     使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

随机推荐

  1. MySQL表连接

    有3种: JOIN 按照功能大致分为如下三类: CROSS JOIN (交叉连接) INNER JOIN (内连接或等值连接). OUTER JOIN (外连接) 交叉连接CROSS JOIN 交叉连 ...

  2. vue实现element-ui对话框可拖拽功能

    element-ui对话框可拖拽及边界处理 应业务需求,需要实现对话框可拖拽问题,应element-ui没有提供官方支持,于是便参考大神的文章,得出了适合业务需要的解决方案.很多大神给出的代码是没有解 ...

  3. 数据结构Java版之排序算法(二)

    排序按时间复杂度和空间复杂度可分为 低级排序 和 高级排序 算法两种.下面将对排序算法进行讲解,以及样例的展示. 低级排序:冒泡排序.选择排序.插入排序. 冒泡排序: 核心思想,小的数往前移.假设最小 ...

  4. LuaJIT 之 FFI

    1. FFI 教程 原文: FFI Tutorial 相关链接:OpenResty 最佳实践之 FFI 加载 FFI 库 FFI 库时默认编译进 LuaJIT 中的,但是不会默认加载或初始化.因此,当 ...

  5. 关于Flutter启动项目白屏,报错[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(58)] Failed to setup Skia Gr context.问题的解决方案

    首先,环境如下: 1.系统:windows10 64位   Android SDK version: 28.0.3   Flutter SDK: v1.5.4-hotfix.2   模拟器: 网易Mu ...

  6. keras Model 1 入门篇

    1 入门 2 多个输入和输出 3 共享层 最近在学习keras,它有一些实现好的特征提取的模型:resNet.vgg.而且是带权重的.用来做特诊提取比较方便 首先要知道keras有两种定义模型的方式: ...

  7. Python 3.x 引入了函数注释

    Python 3.x 引入了函数注释,以增强函数的注释功能,下面是一个普通的自定义函数:   def dog(name, age, species):   return (name, age, spe ...

  8. CentOS 端口和防火墙操作

    Centos 7 端口和防火墙命令: 查看已经开放的端口:firewall-cmd --list-ports 开启端口:firewall-cmd --zone=public --add-port=80 ...

  9. Django中验证码的登录

    需求概述 一般登录页面或者其他页面都需要验证码的功能,那在Django中如何实现呢? 这基本就需要用到第三方模块了:pillow 还需要两个文件,一个是字体文件:Monaco.ttf,另一个是一个模块 ...

  10. LeetCode_26. Remove Duplicates from Sorted Array

    26. Remove Duplicates from Sorted Array Easy Given a sorted array nums, remove the duplicates in-pla ...