zoukankan      html  css  js  c++  java
  • arm: 使用结构体操作寄存器

    使用结构体操作寄存器:

    //寄存器赋值和取值的时候,要注意寄存器的长度,有的寄存器的值只有8位。
    //还要注意,使用volatile修饰寄存器变量。volatile 参考http://www.cnblogs.com/mylinux/p/4630749.html
    //addr.h
    typedef unsigned int S3C24X0_REG32;
    
    /* NAND FLASH (see S3C2410 manual chapter 6) */
    typedef struct {
        S3C24X0_REG32 NFCONF;
        S3C24X0_REG32 NFCMD;
        S3C24X0_REG32 NFADDR;
        S3C24X0_REG32 NFDATA;
        S3C24X0_REG32 NFSTAT;
        S3C24X0_REG32 NFECC;
    } S3C2410_NAND;
    
    //nand.c
    static S3C2410_NAND* s3c2410nand = (S3C2410_NAND *)0x4e000000;
    //如此,s3c2410nand 表示寄存器组的起始地址 。
    //&s3c2410nand->NFCMD 表示NFCMD寄存器的地址 。
    //s3c2410nand->NFCMD 表示NFCMD寄存器的值 。
    //寄存器赋值和取值的时候,要注意寄存器的长度,有的寄存器的值只有8位。
    //还要注意,使用volatile修饰寄存器变量。
    
    /* 读取数据 */
    static unsigned char s3c2410_read_data(void)
    {
        volatile unsigned char *p = (volatile unsigned char *)&s3c2410nand->NFDATA;
        return *p;
    }
  • 相关阅读:
    寒假作业1
    自我介绍
    我罗斯方块1
    我罗斯方块
    解题报告 数学2
    解题报告 转化模式
    解题报告 数学
    经典语录
    解题报告 Trick
    解题报告 帮忙
  • 原文地址:https://www.cnblogs.com/mylinux/p/4187246.html
Copyright © 2011-2022 走看看