"__IO uint32_t" 中的__IO (volatile)

如果不加這個voliatile修飾,程序是利用catch當中的數據,那個可能是過時的了,加了 voliatile,就在需要用的時候,程序重新去那個地址去提取,保證是最新的。如:while((unsigned char *)0x20)時,有時系統可能不真正去讀0x20的值,而是用第一次讀出的值,如果這樣,那這個循環可能是個死循環。用了volatile 則要求每次都去讀0x20的實際值。

1. volatile變量可變允許除了程序之外的比如硬件來修改他的內容 。

 2. 訪問該數據任何時候都會直接訪問該地址處內容,即通過cache提高訪問速度的優化被取消,提高訪問速度,並且確保當前讀取到的值是最新的數據值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章