第十六周课堂测试补充
2018-01-03 11:13
309 查看
测试中错误部分的理解和学习
地址的定义部分错误
C语言中*(volatile unsigned int *)0x500
的解释:
如下;
(unsigned int *)0x500
:将地址
0x500
强制转化为int型指针
*(unsigned int *)0x500=0x10:对地址为
0x500
赋值为
0x10
详见嵌入式中的 (volatile unsigned int )理解
修改测试代码如下:#define DATA_Addr 0xFFFFC0000 #define DATA *(volatile int *) DATA_Addr void SetHours(int hours) { unsigned short time; time = (unsigned short)(DATA); time &= 0x07FF;//将hous小时所在的比特位置0 DATA = ((unsigned short))(hours<<11)|time;//将要设置的hours变量通过移位变换到time变量中hours所在的比特位置,再与time以或运算合并 } int getHours() { unsigned short time; time = (unsigned short)(DATA); return (int)((time>>11)&0x001f);//直接将time向右移动11位清除掉分钟和秒的比特位上的数据,再将hours之前的位清零; }
测试:
对于秒部分的提取和置位的学习
这里直接给出代码因为seconds与上面同理只是位置不同#define DATA_Addr 0xFFFFC0000 #define DATA *(volatile int *) DATA_Addr void SetSeconds(int seconds) { unsigned short time; time = (unsigned short)(DATA); time &= 0xffe0; DATA = ((unsigned short))(seconds)|time; } int getSeconds() { unsigned short time; time = (unsigned short)(DATA); return (int)(time&0x001f); }
相关文章推荐
- 第五、六周课堂测试补充
- 第五周课堂测试补充
- 20155319 课堂测试题补充提交
- 第十六周课堂测试
- 2017-2018-1 20155318 《信息安全系统设计基础》第六周课堂测试补充
- DBCP,C3P0,Tomcat_JDBC 等连接池的性能及稳定性测试 druid待补充
- 上一代C&C++测试框架TestNG++入门指导-补充和实践
- # 课堂测试(CH6)20155218
- Oracle 1204 RAC failover 测试 (一)--补充
- 20162311 课堂测试 泛型类—Bag
- 【课堂测试和课堂实践成绩】2017-2018 第一学期201623班《程序设计与数据结构》(2017年12月15日更新)
- 2017-2018-1 20155239学号 《信息安全系统设计基础》课堂测试补做+第四周学习总结
- QQ传送文件的测试用例---欢迎补充
- 20155309南皓芯 第六周 课堂测试 及课下测试
- 20155305 5月17日课堂代码测试
- 20155318 第十六周课堂实践——嵌入式基础
- 课堂测试-单元测试(比较大小)
- 课堂测试-单元测试
- 20155327 课堂代码测试
- 测试工具补充