强制类型转换---看原子的IAP升级例程的问题所引发的测试
来源:互联网 发布:mac好用的下载软件 编辑:程序博客网 时间:2024/05/24 03:19
在看IAP升级时,看了下官方的例程,还参考了战舰板原子的例程。。在其中发现官方例程中都是把uint8_t类型数组直接强转为uint32_t类型然后字编程写入flash,在原子的例程有一个移位的操作,把两个uint8_t移位成uint16_t然后半字编程。。(在实际编程中按字编程的内部操作也是按照按半字编程进行的)。。。开始百思不得其解。。具体例程中截图如下
官方例程:
原子例程:
以前一直对数组格式的类型转换理解错误,一直以为只是单纯的内存中地址相应的扩大或缩小没理解到大小端的问题。。理解错误了内存中存储以及大小端问题。。自己实际做了个测试。发现强制类型转换跟原子的移位效果是一样的。。
究其原因,认为是在内存中存储的大小端问题。。
实验:定义两个变量然后强制类型转换
uint8_t chartest[2] = {0x01,0x02};
uint16_t shorttest;
强制转换:
while(1)
{
shorttest = *(uint16_t *)chartest;
}
在keil中查看shorttest的值:
与移位的操作,结果一样
分析强制类型转换:
ARM是小端处理器。char a[2],在内存中从低到高存放a[0]→a[1]→。。要把这两个char类型转换为short类型数值。。这两个char类型数在内存中的位置不变,在转换时按照低字节在低位的小端存储方式来转,,,就是a[1]在高8位a[0]在低8位。。。。
0 0
- 强制类型转换---看原子的IAP升级例程的问题所引发的测试
- 多继承下函数指针强制转换所引发的诡异问题(CCNotificationCenter)
- 强制类型转换的问题
- 类型强制转换的问题
- 强制的类型转换
- 强制类型的转换
- foreach 参数强制类型转换的问题
- 一个强制类型转换的问题
- 关于强制类型转换的小问题
- 强制类型转换中“自以为是”的问题
- 进度条所引发的问题
- STM32 IAP升级遇到的问题总结
- 类型强制转换的危险
- 指针的强制类型转换
- java的强制类型转换
- 函数的强制类型转换
- C#的强制类型转换
- 指针的强制类型转换
- 那些走过的时间-大学毕业感叹
- 账务账号的开通
- 谢楠、杨乐乐领衔 主播都成"人工美女"
- Selenium-webdriver系列教程(四)————如何定位测试元素
- poj3349
- 强制类型转换---看原子的IAP升级例程的问题所引发的测试
- Selenium-webdriver系列教程(五)————如何定位frame中的元素
- Selenium-webdriver系列教程(六)————如何捕获弹出窗口
- 为hibernate的配置文件添加自动提示功能
- Scala类
- JPA JPQL 语句
- 古装齐刘海大比拼 孙俪秒杀众人刘诗诗面目全非
- Selenium-webdriver系列教程(七)————如何处理alert和confirm
- QScrollBar样式