久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3424|回復: 0
打印 上一主題 下一主題
收起左側

STM32--簡單的IAP操作

[復制鏈接]
跳轉到指定樓層
樓主
ID:83710 發表于 2015-6-24 18:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
所謂IAP,就是在系統編程,也就是說,CPU 在運行的
過程中,可以對FLASH 進行刷寫.基本的應用可用于寫入加密字或者一些存儲信息等,高級點
的應用則是用于某些使用的設備上,系統查入SD 卡后自動更新程序等.
在stm32f10x_conf.h中開放#include "stm32f10x_flash.h"
#include "STM32Lib\\stm32f10x.h"
#include "hal.h"
#define FLASH_ADR 0x08008000  //要寫入數據的地址
#define FLASH_DATA 0x8a8a8a8a  //要寫入的數據
int main(void)
{
u32 tmp;
ChipHalInit();   //片內硬件初始化
ChipOutHalInit();  //片外硬件初始化

//判斷此FLASH是否為空白
tmp=*(vu32*)(FLASH_ADR);
/* 將地址(FLASH_ADR)強制轉化為(vu32*)型指針求內容*然后再將值賦給tmp。還是比較考練C語言的,老師上課可從沒這么講過。*/
if(tmp==0xffffffff)
{
   FLASH_Unlock();
   FLASH_ProgramWord(FLASH_ADR,FLASH_DATA);
   FLASH_Lock();
   USART1_Puts("要寫入的地址為空,已經寫入認證數據\r\n"); //在指定地址編寫一個字
}
else if(tmp==FLASH_DATA)
     {
       USART1_Puts("地址數據與認證數據符合\r\n");
       FLASH_Unlock();
       FLASH_ErasePage(FLASH_ADR);
     /* 和眾多 FLASH 存儲器的特性類似,STM32 內的FLASH 數據只能由1變成0,如果要由0
      變成1,則需要調用刷除函數,把一個頁都刷除掉.如果不擦也能寫但是只能寫上0*/

       FLASH_ProgramWord(FLASH_ADR,0x11223344);
       FLASH_Lock();
       USART1_Puts("寫入了0x11223344\r\n");
}
else
{
   USART1_Puts("地址上的數據與認證的數據不符合,有可能是寫入失敗或者是要寫入的地址非空\r\n");
   FLASH_Unlock();
   FLASH_ErasePage(FLASH_ADR);
   FLASH_Lock();
   USART1_Puts("已經刷除了要寫入的地址\r\n");
}

while(1);


}
系統通過串口輸出寫FLASH的狀情況,在第一次運行的時候,一般情況, 0x08008000處的
FLASH為空,于是系統就往空的FLASH上寫入一個數據0x8a8a8a8a.并提示已經寫入.此時用
戶只要再次復位一下系統,則由于之前已經寫入并為系統所讀取,則這次串口就會輸出已經寫
入了數據的信息.
注意寫FLASH 之前需要調用解鎖函數,寫入后應調用鎖定函數.



閃存的指令和數據訪問是通過AHB總線完成的。預取模塊是用于通過ICode總線讀取指令的。仲裁是作用在閃存接口,并且DCode總線上的數據訪問優先。
讀訪問可以有以下配置選項:
● 等待時間:可以隨時更改的用于讀取操作的等待狀態的數量。
● 預取緩沖區(2個64位):在每一次復位以后被自動打開,由于每個緩沖區的大小(64位)與閃存的帶寬相同,因此只通過需一次讀閃存的操作即可更新整個緩沖區的內容。由于預取緩沖區的存在,CPU可以工作在更高的主頻。CPU每次取指最多為32位的字,取一條指令時,下一條指令已經在緩沖區中等待。
● 半周期:用于功耗優化。
注: 1. 這些選項應與閃存存儲器的訪問時間一起使用。等待周期體現了系統時鐘(SYSCLK)頻率與閃存訪問時間的關系: 0等待周期,當 0 < SYSCLK < 24MHz 1等待周期,當 24MHz < SYSCLK ≤ 48MHz 2等待周期,當 48MHz < SYSCLK ≤ 72MHz
2 . 半周期配置不能與使用了預分頻器的AHB一起使用,時鐘系統應該等于HCLK時鐘。該特性只能用在時鐘頻率為8MHz或低于8MHz時,可以直接使用的內部RC振蕩器(HSI),或者是主振蕩器(HSE),但不能用PLL。
3. 當AHB預分頻系數不為1時,必須置預取緩沖區處于開啟狀態。
4. 只有在系統時鐘(SYSCLK)小于24MHz并且沒有打開AHB的預分頻器(即HCLK必須等于SYSHCLK)時,才能執行預取緩沖器的打開和關閉操作。一般而言,在初始化過程中執行預取緩沖器的打開和關閉操作,這時微控制器的時鐘由8MHz的內部RC振蕩器(HSI)提供。
5. 使用DMA:DMA在DCode總線上訪問閃存存儲器,它的優先級比ICode上的取指高。DMA在每次傳送完成后具有一個空余的周期。有些指令可以和DMA傳輸一起執行。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区福利视频 | 国产精品3区 | 日韩影院在线 | 欧美日在线 | 国产精品国产三级国产aⅴ中文 | 亚洲女人天堂成人av在线 | 国产91在线 | 欧美 | 久久久www | 日本精品一区二区三区视频 | 久久久久国产精品 | 久久精品91久久久久久再现 | 9久久| 一区二区在线 | 精品国产91乱码一区二区三区 | 国产成人精品一区二区三区四区 | 国产精品久久久久久久久 | 在线观看成年视频 | 久久精品小短片 | 久久久精品国产 | 日韩欧美国产一区二区 | 免费久久视频 | 欧美日韩久久久久 | 热re99久久精品国产99热 | 午夜精品一区二区三区在线观看 | 国产三级电影网站 | 日韩中文字幕在线视频 | 久久网站免费视频 | 91精品一区二区三区久久久久久 | 桃花av在线 | 国产精品视频97 | 91素人 | 国产精品高潮呻吟久久av野狼 | 99精品久久 | 在线视频日韩 | 成人精品一区二区 | 成人妇女免费播放久久久 | 综合成人在线 | 午夜激情在线视频 | 91精品国产综合久久婷婷香蕉 | 一区二区三区高清在线观看 | 欧美a在线|