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);//熄灭

最新文章

  1. 为Autodesk Viewer添加自定义工具条
  2. Android touch mode和focusableInTouchMode分析
  3. share point 2013 显示详细错误信息?
  4. HighChart 实现从后台取数据来实时更新柱状和折线组图
  5. 3月3日(2) Search Insert Position
  6. linux查看压缩包的文件列表
  7. my dream
  8. BZOJ-2330-[SCOI2011]糖果(差分约束)
  9. RabbitMQ 学习开发笔记
  10. Django Web项目代码规范参考
  11. java常用数据类型使用Day008
  12. tomcat使用自签名证书实现https加密访问
  13. pycharm2018.11最新激活码
  14. MySql DDL语言(数据库和数据表的管理)
  15. FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB
  16. NFS服务与crond服务
  17. 【洛谷】【二分查找】P1102 A−B数对
  18. unbuntu 16.04.2 安装 Eclipse C++开发环境
  19. U3D组件------CharacterController(角色控制器)
  20. 20172325 2018-2019-2 《Java程序设计》第五周学习总结

热门文章

  1. Dockerfile 指令 WORKDIR介绍
  2. 【java反射】
  3. vue实现滚动条滚到相应高度触发动画的操作
  4. 亲历谷歌 Chrome 浏览器弹窗境外广告的解决方法(图) | 技术乐园
  5. 18Flutter中的路由、路由替换、返回到根路由:
  6. python 基础之确认文件是否存在
  7. Spring Boot学习笔记——搭建一个最简单的hello world
  8. iOS从App跳转至系统设置菜单各功能项
  9. iOS-GCD处理后台线程和UI线程的交互
  10. wordpress通过$wpdp更新数据表内容