ch57x 编写程序遇到的奇葩事

ch579写TMR

第一次使用变量存地址

1623419450198523.png

输出,没写进去

1623419450791317.png

第二次直接写个一样的常量地址

1623419450325141.png

输出就是正常的

1623419450402584.png


有人知道为什么吗?竟有这种事,第一次遇到。

这个是基础C问题,你1的temp并没有指向0x4000200c,你是赋值temp的值是0x4000200c,你应该uint32* temp = (uint32*)0x4000200c,另外,地址等值最好用宏定义,这是个好习惯。


你估计没仔细看,我不需要temp 地址指向0x4000200C,*( type * )value 代表将这个变量强转为地址,再指向这个地址。不是你想的取出temp的地址,再转类型指针,俩步的打印都是一样的,按照你说的,第二步打印*( uint32_t * )temp 根本打印不出来正确的数。不信你试试。


屏幕截图 2021-06-12 124759.png官方例程的DMA地址赋值,就是我这个的反向操作,地址强转变量,还割掉了前16位。不用宏定义的就是要玩骚操作,可惜玩出了BUGj_0064.gif


只有登录才能回复,可以选择微信账号登录