轉:https://bbs.csdn.net/topics/391000139?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
STM32的中地址是按Bit,Byte,還是Word作為單位的? 例如0x8000000,它后面的單位是什么? Byte
為什么有的地址是按照uint16_t,有的是按照uint32_t,這個是為什么?為什么有的地址是按照uint16_t,有的是按照uint32_t,這個是為什么?
#define FLASH_BASE ((uint32_t)0x08000000)
那FLASH_BASE是個地址,為什么要對這個地址使用(uint32_t)轉換呢?
答:就是賦給它一個數據類型。這樣,*FLASH_BASE 就是一個雙字(4字節)。
那FLASH_BASE是個地址,為什么要對這個地址使用(uint32_t)轉換呢?
你看看這個宏定義是在什么地方使用的,看名字,應該是賦給某個地址變量的,那個變量的類型應該就是uint32_t的。
你當然也可以不在宏定義的地方給出類型,而在賦值的時候自己做類型轉換,甚至讓編譯器自己做自動類型轉換可能也是可以的,只是效率低一點,代碼可讀性差一點。