STM32F103C8T6 內部 FLASH讀寫

2021-09-28 23:09:30 字數 1917 閱讀 6110

u16	people_id[50]

=;/* 假設公司最多50人 */

u16 people_clock_t[50]

;/* 每個人簽到次數 */

u16 people_num =2;

/* 人數 */

#define debug

#define flash_size 64

/* 所選mcu的flash容量大小(單位為k) */

#if flash_size < 256

#define sector_size 1024

/* 位元組 */

#else

#define sector_size 2048

/* 位元組 */

#endif

flash_status debug;

/* flash 寫函式 以8 bit 方式寫入 */

void

flash_writedata

( uint32_t startaddress, uint16_t *writedata, uint16_t counttowrite )

/* 解鎖寫保護 */

flash_unlock()

;/* 計算去掉0x08000000後的實際偏移位址 */

offsetaddress = startaddress - flash_base;

/* 計算扇區位址 */

sectorposition = offsetaddress / sector_size;

/* 對應扇區的首位址 */

sectorstartaddress = sectorposition * sector_size + flash_base;

flash_clearflag

( flash_flag_eop | flash_flag_pgerr | flash_flag_wrprterr )

;/* 擦除這個扇區 */

debug =

flash_erasepage

( sectorstartaddress )

;#ifdef debug

if( debug != flash_complete )

printf

("扇區擦除失敗\n\n");

#endif

for( i =

0; i < counttowrite; i++

)flash_lock()

;/*上鎖寫保護 */

}u16 stmflash_readhalfword

( u32 faddr )

/* 16位資料讀取 */

void

flash_readmoredata

( u32 readaddr, u16 *pbuffer, u16 numtoread )

}void

write_to_flash

(void

)for

( c =

0; c <

50; c++

) shuju[

100]

= people_num;

flash_writedata

(0x08004000

, shuju,

101)

;/* 寫入 */

}void

read_from_flash

(void

)for

( c =

0; c <

50; c++

) people_num = shuju[

100]

;}

main

void main(void)

}

STM32F103C8T6學習筆記 中斷

1 nvic 巢狀向量中斷控制器 即中斷優先順序管理 scr aircr暫存器 bit10 8 111 0位搶占優先順序 4位響應優先順序 這是整個系統的 每乙個中斷 對應ip暫存器 可設定成搶占優先順序 響應優先順序0 16 這是對應具體乙個中斷的 110 1位搶占優先順序 3位響應優先順序 ip...

《STM32》F103C8T6最小系統

復位電路是一種用來使電路恢復到起始狀態的電路裝置,它的操作原理與計算器有著異曲同工之妙,只是啟動原理和手段有所不同。復位電路,就是利用它把電路恢復到起始狀態。就像計算器的清零按鈕的作用一樣,以便回到原始狀態,重新進行計算。和計算器清零按鈕有所不同的是,復位電路啟動的手段有所不同。一是在給電路通電時馬...

有關STM32F103C8T6的超頻

閒來無事突然對32的超頻來了興趣。其實是學校有個實訓,給的微控制器是stm32f1做,想著能弄的更好點就想著把f1超頻一下,感覺能完成更多的事情吧。平台是 上通用的st32f103c8t6最小系統板。看了正點原子的論壇之後感覺,雖然很多大佬都超頻過,但是具體超頻的方法好像沒有路子,我查了好久是沒有查...