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. (转)awk 详解

    出处:https://blog.51cto.com/yijiu/1358416 awk详解 awk是一款非常牛逼的报告生成工具,能够将文本格式化成显示为比较直观的结果 废话不多说,直接上例子 awk的 ...

  2. label设置渐变时不显示纯英文纯数字字符串

    提出问题: 当对UILabel设置渐变color时,有点小问题.即:text为中文或中英混合字符串时显示正常,纯英文字符串不显示!!!   剖析问题: 经搜索了解到:在显示中文时,绘制渐变color的 ...

  3. php手记(替代语法、COOKIE及时生效)

    为方便区分流程语句的开始和结束位置,可以使用PHP提供的替代语法进行编码. 左花括号({) - 替换成 → 冒号(:) 右花括号(}) - 替换成 → "endif;" " ...

  4. javascript的正则表达式总结

    网上正则表达式的教程够多了,但由于javascript的历史比较悠久,也比较古老,因此有许多特性是不支持的.我们先从最简单地说起,文章所演示的正则基本都是perl方式. 元字符 ( [ { \ ^ $ ...

  5. 如何计算一个C/C++程序运行时间

    前两天要计算一个用C++实现的算法运行时间,就用了clock()这个函数.程序大体上如下: clock_t start,end; start = clock(); /*my code*/ end = ...

  6. php手记之05-tp5软删除

    01-需要在设置软删除的模型里设置

  7. 【Canvas】绘制几何级数Geometric series曲线 y=1+1/2+1/4+1/8+1/16+1/32+1/64+....

    相关资料:https://baike.baidu.com/item/%E5%87%A0%E4%BD%95%E7%BA%A7%E6%95%B0/112584?fr=aladdin 图线: 代码: < ...

  8. poj2456

    Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24979   Accepted: 11594 ...

  9. VS Code 使用技巧[转载]

    原文:VS Code 快捷键(VS Code Shortcuts.pdf) 常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show ...

  10. C语言练习,可以解析协议,主机,路径,询问,片段等

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> ...