12.12

作者: 李响lx | 来源:发表于2017-12-12 18:55 被阅读0次

MDK 直接操作寄存器

编程三步

1.配置时钟(所以外设使用前都需要使能相应时钟)

2.外设初始化(根据芯片手册)

3.编程

操作寄存器三步

1.通过芯片手册,找到要操作的外设寄存器。找到相应寄存器组的

基地址、偏移量、需操作位、以及要赋的值

2.宏定义 地址

#define GPIO_H 0x40021C00               //宏定义基地址

#define GPIO_H_MODE    *(unsigned int *)(GPIO_H+0x00)         //通过偏移量宏定义寄存器地址,操作宏名就可以操作寄存器。

3.寄存器赋值

赋值0:     宏名      &=~(1《操作位偏移量)

赋值1:     宏名      |=(1《操作位偏移量)

GPIO 寄存器操作

#define RCC_BASE 0x40023800

#define RCC_BASE_AHB1 *(unsigned int *)(0x40023800+0x30)

#define GPIO_H 0x40021C00

#define GPIO_H_MODE *(unsigned int *)(GPIO_H+0x00)

#define GPIO_H_typ *(unsigned int *)(GPIO_H+0x04)

#define GPIO_H_speed *(unsigned int *)(GPIO_H+0x08)

#define GPIO_H_PUP  *(unsigned int *)(GPIO_H+0x0C)

#define GPIO_H_ODR  *(unsigned int *)(GPIO_H+0x14)

void  init(void)

{

RCC_BASE_AHB1 |=1<<7;

GPIO_H_MODE |=1<<20;

GPIO_H_typ =0x00;

GPIO_H_speed =0x00;

GPIO_H_PUP |=1<<20;

}

void delay( int n)

{ int i,j;

for (i=1;i<=10000;i++)

for (j=1;j<=n;j++)

{ }

}

void SystemInit(void)

{

}

int main(void)

{

int i;

init();

while (1)

{

GPIO_H_ODR =0x00;

delay(100);

GPIO_H_ODR =0xffffffff;

delay(100);

}

}

相关文章

  • 每日一画69

    12.12

  • 始于颜值,敬于才华,终于人品,久于责任

    12.12

  • 缺钱会得病

    ——12.12感恩会员日

  • 致12.12

    12.12是一个让人特别容易记住的数字。以前我对这个12.12没有特别的感觉,但自从2014.12.12让...

  • 特别的12.12

    12.12一个特殊的日子。 所谓的12.12是个很美数字的日子。大伙都在轰轰烈烈地淘淘买买地欢度双...

  • 【随笔】准备剁手的“12.12”

    下班回家,忙活完,先是倒头睡了一会儿,因为即将迎来“12.12”,要养足精神买买买。 今年的“12.12”将会是我...

  • 12.12复盘

    127/150复盘&计划12.12 复盘 12.12 1.方法很重要,沉淀更重要,要坚持用行动验证想法。 2.为什...

  • 12.12

    菊wfj 姓名:魏凤菊 辽阳市丛迪服装有限公司 六项精进354期学员 六项精进356期志工 六项精进421期志工...

  • 12.12

    霓虹树下叶纷飞 君口喃喃细语闻 驻足停留欲还休 还求明月绮心间

  • 12.12

    今天一早起来,天空云很厚很多,还飘着点细雨,虽然不知道为什么,但我就是感觉心情挺好的✨ 直到再次路过每天上课必经的...

网友评论

      本文标题:12.12

      本文链接:https://www.haomeiwen.com/subject/tbinixtx.html