zoukankan      html  css  js  c++  java
  • 【课堂实践】嵌入式基础

    实验内容

    实验思路

    1. 用uint16_t型(16位)指针time指向该16位寄存器,作为读取和修改寄存器值的通道;
    2. 定义一个名为timeOp的位域,结构如下,存储从寄存器中读取的值,修改操作在该位域上进行,修改后的值返回至寄存器中。

    实验代码

    typedef uint16_t u16;  //16位
    
    u16 *time;      
    time = OXFFFFC0000 + 2;   //time指针指向该寄存器
    
    struct{                  //定义一个timeOp位域
        unsigned seconds:5,  
        minutes: 6,
        hours: 5;
    }timeOp;
    
    timeOp.hours = *time>>11;            //利用time指针将寄存器中的值放至timeOp中
    timeOp.minutes = (*time & 0X07E0)>>5;
    timeOp.seconds = *time & 0X001F;
    
    /*
     * 函数功能:修改寄存器中的Hours部分的值
     * 实现方法:修改timeOp位域中hours的值,将位域的值利用time指针,传至寄存器中
     */
    void SetHours(int hours)
    {
        timeOp.hours = hours;
        *time = (u16)timeOp;  //通过强制转换的方式将值传给time指针,指针将值给寄存器
    }
    
    /*
     * 函数功能:返回寄存器中hours部分的值
     * 实现方法:将timeOp位域中hours的值直接返回即可
     */
    int getHours()
    {
        return timeOp.hours;
    }
    

    附加

    同理,对于寄存器中minutes、seconds的修改和读取,也可用同样的方法进行操作,函数如下:

    minutes
    /*
     * 函数功能:修改寄存器中的Minutes部分的值
     * 实现方法:修改timeOp位域中Minutes的值,将位域的值利用time指针,传至寄存器中
     */
    void SetMinutes(int minutes)
    {
        timeOp.mintutes = minutes;
        *time = (u16)timeOp;  //通过强制转换的方式将值传给time指针,指针将值给寄存器
    }
    
    /*
     * 函数功能:返回寄存器中Minutes部分的值
     * 实现方法:将timeOp位域中minutes的值直接返回即可
     */
    int getMinutes()
    {
        return timeOp.minutes;
    }
    
    
    seconds
    /*
     * 函数功能:修改寄存器中的Seconds部分的值
     * 实现方法:修改timeOp位域中seconds的值,将位域的值利用time指针,传至寄存器中
     */
    void SetSeconds(int seconds)
    {
        timeOp.seconds = seconds/2;
        *time = (u16)timeOp;  //通过强制转换的方式将值传给time指针,指针将值给寄存器
    }
    
    /*
     * 函数功能:返回寄存器中Seconds部分的值
     * 实现方法:将timeOp位域中seconds的值X2返回即可
     */
    int getSeconds()
    {
        return timeOp.seconds*2;
    }
    
    
  • 相关阅读:
    (转载)windows下安装配置Xampp
    (转载)C# winform 在一个窗体中如何设置另一个窗体的TextBox的值
    (转载)winform图片标尺控件
    (转载)WinformGDI+入门级实例——扫雷游戏(附源码)
    (转载)c# winform 窗体起始位置 设置
    (转载)C# GDI+ 画简单的图形:直线、矩形、扇形等
    (转载)C# ListView用法详解
    (转载)C#工具箱Menustrip控件中分割线的设置方法
    计算机中英文术语对照
    [JAVA]多线程之实现Callable接口
  • 原文地址:https://www.cnblogs.com/protectmonarch/p/8182653.html
Copyright © 2011-2022 走看看