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;
    }
  • 相关阅读:
    HDU 1496 Equations
    HDU 1060 Leftmost Digit
    HDU 1391 Number Steps
    HDU 1212 Big Number
    HDU 1491 Octorber 21st
    HDU 1339 A Simple Task
    HDU 2710 Max Factor
    HDU 1176 免费馅饼
    FORTH基本堆栈操作
    FORTH 安装使用
  • 原文地址:https://www.cnblogs.com/mylinux/p/4187246.html
Copyright © 2011-2022 走看看