日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32之内部FLASH例程

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32之内部FLASH例程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include "stm32f10x.h" #include <string.h>/* STM32 內部 FLASH 配置 */ #define STM32_FLASH_SIZE 512 /* 所選STM32的FLASH容量大小(單位為K) */#if STM32_FLASH_SIZE < 256#define STM_SECTOR_SIZE 1024 /* < 256為1K字節頁, >=256 為2K頁 */ #else #define STM_SECTOR_SIZE 2048 #endif/* 應用程序區域 */ #define APP_REGION (0x8000000 + 0x80000 - STM_SECTOR_SIZE)/* RCC時鐘配置 */ void RCC_config() { ErrorStatus HSEStartUpStatus;/* RCC寄存器設置為默認配置 */RCC_DeInit();/* 打開外部高速時鐘 */RCC_HSEConfig(RCC_HSE_ON);/* 等待外部高速時鐘穩定 */HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS) { /* 設置HCLK = SYSCLK */RCC_HCLKConfig(RCC_SYSCLK_Div1);/* 設置PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1);/* 設置PCLK1 = HCLK / 2 */RCC_PCLK1Config(RCC_HCLK_Div2);/* 設置FLASH代碼延時 */FLASH_SetLatency(FLASH_Latency_2);/* 使能預取址緩存 */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* 設置PLL時鐘源為HSE倍頻9 72MHz */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* 使能PLL */RCC_PLLCmd(ENABLE);/* 等待PLL穩定 */while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);/* 設置PLL為系統時鐘源 */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/* 等待系統時鐘源切換到PLL */while(RCC_GetSYSCLKSource() != 0x08);} }/* 扇區緩沖區 */ static uint8_t flash_buf[STM_SECTOR_SIZE];/* 讀flash */ void read_flash(uint32_t addr, uint8_t *buf, uint16_t size) {uint16_t i;for(i = 0; i < size; i++){buf[i] = *(__IO uint8_t *)(addr + i);} } /* 寫flash */ void write_flash(uint32_t addr, uint8_t *buf, uint16_t size) {uint32_t addr_base;uint16_t len;uint16_t i;/* 檢查地址合法性 */if(addr < FLASH_BASE ||(addr >= (FLASH_BASE + 1024 * STM32_FLASH_SIZE)))assert_param(0);/* 將數據循環寫入flash */while(size) {/* 扇區基地址 */addr_base = (addr / STM_SECTOR_SIZE) * STM_SECTOR_SIZE;/* 讀出整個扇區內容 */read_flash(addr_base, flash_buf, STM_SECTOR_SIZE);/* 需要寫入的長度 */len = ((addr + size) > (addr_base + STM_SECTOR_SIZE)) ? (addr_base + STM_SECTOR_SIZE - addr) : size;/* 將需要改變的內容替換掉 */memcpy(flash_buf + addr - addr_base, buf, len);/* 解鎖 */FLASH_Unlock();/* 擦除整片扇區 */FLASH_ErasePage(addr_base);/* 寫使能 */FLASH->CR &= FLASH_CR_OPTWRE; /* 重新將內容寫入扇區 */for(i = 0; i < STM_SECTOR_SIZE / 2; i++, addr_base += 2) /* 從頭寫到尾 */FLASH_ProgramHalfWord(addr_base, *((uint16_t *)flash_buf + i));/* 鎖定 */FLASH_Lock();/* 將數據偏移len */addr += len;buf += len;size -= len;} }int main() {uint8_t buf[5] = {1, 2, 3, 4, 5};uint8_t test[5];/* 時鐘配置 */RCC_config();write_flash(APP_REGION, buf, 5);read_flash(APP_REGION, test, 5);while(1){} }

?

總結

以上是生活随笔為你收集整理的STM32之内部FLASH例程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本之道久久 | 欧美成人区 | 音影先锋av资源 | 新婚若妻侵犯中文字幕 | 午夜激情福利 | 亚洲天堂伊人 | 一起操在线观看 | 久久久久久久九九九九 | 国产精品另类 | 日本专区在线 | 永久免费黄色片 | www.三级| 欧美一区二区视频在线 | 国产乱妇4p交换乱免费视频 | 色妇av| 羞羞动漫在线观看 | 亚洲一区二区三区91 | 亚洲妇熟xx妇色黄蜜桃 | 无码人妻精品一区二区三区在线 | 91精品国产视频 | 美女精品一区 | av综合色| 俄罗斯一级片 | 日本一区二区三区免费看 | 三级av片| av加勒比在线 | 伊人久久免费视频 | 杨幂国产精品一区二区 | 先锋av在线资源 | 欧美一区二区久久 | 欧美嘿咻视频 | 欧美黄色一级生活片 | 亚洲精品无码一区二区 | 奇米激情| 91麻豆精品国产91久久久久久 | 国产一区二区三区免费播放 | av丝袜在线观看 | 用力抵着尿进去了h | 亚洲伊人av| jizz91| 涩涩视频在线观看免费 | 欧美另类精品xxxx孕妇 | 亚洲五码在线 | 一区二区三区四区av | 久久久久久久久久国产 | 色呦呦网站在线观看 | 91涩漫成人官网入口 | 最新三级网站 | 黄色综合网 | 国产人妖ts重口系列网站观看 | japansexxxxhd医生| 中文在线a√在线8 | 看av免费毛片手机播放 | 欧美日免费 | 中文字幕在线观看二区 | 免费黄色av| 欧美一级色 | 美国av片 | 日本白嫩的bbw | 亚洲熟妇无码久久精品 | 午夜激情黄色 | 亚洲另类xxxx | 99热这里只有精品66 | 日韩无套无码精品 | 欧美精品一卡二卡 | 欧美第一网站 | 在线观看免费黄视频 | 国产精品一区久久 | 综合久久久久久 | 极品五月天 | 成人一区二区在线观看 | 激情婷婷六月天 | 蜜臀99久久精品久久久久久软件 | 亚洲精品国产精品国自产观看 | 国产在线视频你懂得 | 天堂中文在线资源 | wwwav在线 | 操网站| 天天碰免费视频 | 一卡二卡三卡四卡五卡 | 打屁股疼的撕心裂肺的视频 | 日韩欧美在线免费观看 | 波多野结衣一区二区在线 | 国产精品亲子伦对白 | 欧洲免费毛片 | 在线观看亚洲精品视频 | 欧美资源| 亚洲一区二三区 | 欧美 亚洲 一区 | 国产视频97| 欧美一级免费看 | 亚洲色图网站 | 亚洲国产精品99久久 | 91theporn国产在线观看 | 亚洲av无码一区东京热久久 | av九九九 | 精品一区二区三区在线观看视频 | 亚洲色图 一区二区 | 欧美亚洲第一页 |