91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 834KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-10
  • 語言: 其他
  • 標簽: USB??復合設備??

資源簡介

基于stm32 的USB 鼠標 鍵盤復合設備實例,已驗證,編譯通過。

資源截圖

代碼片段和文件信息

#include?“flash.h“
?
u16?STMFLASH_BUF[STM_SECTOR_SIZE/2];//最多是2K字節

u16?STMFLASH_ReadHalfWord(u32?faddr)
{
return?*(vu16*)faddr;?
}

void?STMFLASH_Write_NoCheck(u32?WriteAddru16?*pBufferu16?NumToWrite)???
{? ? ?
u16?i;
for(i=0;i {
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORDWriteAddrpBuffer[i]);
????WriteAddr+=2;//地址增加2.
}??
}

void?STMFLASH_Write(u32?WriteAddru16?*pBufferu16?NumToWrite)
{
FLASH_EraseInitTypeDef?FlashEraseInit;
HAL_StatusTypeDef?FlashStatus=HAL_OK;
u32?PageError=0;
u32?secpos; ???//扇區地址
u16?secoff; ???//扇區內偏移地址(16位字計算)
u16?secremain;?//扇區內剩余地址(16位字計算) ???
? u16?i;????
u32?offaddr;???//去掉0X08000000后的地址
if(WriteAddrse||(WriteAddr>=(STM32_FLASH_base+1024*STM32_FLASH_SIZE)))return;//非法地址
HAL_FLASH_Unlock(); //解鎖
offaddr=WriteAddr-STM32_FLASH_base; //實際偏移地址.
secpos=offaddr/STM_SECTOR_SIZE; //扇區地址??0~127?for?STM32F103RBT6
secoff=(offaddr%STM_SECTOR_SIZE)/2; //在扇區內的偏移(2個字節為基本單位.)
secremain=STM_SECTOR_SIZE/2-secoff; //扇區剩余空間大小???
if(NumToWrite<=secremain)secremain=NumToWrite;//不大于該扇區范圍
while(1)?
{
STMFLASH_Read(secpos*STM_SECTOR_SIZE+STM32_FLASH_baseSTMFLASH_BUFSTM_SECTOR_SIZE/2);//讀出整個扇區的內容
for(i=0;i {
if(STMFLASH_BUF[secoff+i]!=0XFFFF)break;//需要擦除?? ??
}
if(i {
??FlashEraseInit.TypeErase?=?FLASH_TYPEERASE_PAGES;??????
FlashEraseInit.Banks?=?FLASH_BANK_1;???
FlashEraseInit.PageAddress?=?secpos*STM_SECTOR_SIZE+STM32_FLASH_base;???????????
FlashEraseInit.NbPages?=?1;??????//電壓范圍,VCC=2.7~3.6V之間!!
??HAL_FLASHEx_Erase(&FlashEraseInit&PageError);
??FlashStatus=FLASH_WaitForLastOperation(FLASH_WAITETIME);??
??for(i=0;i {
STMFLASH_BUF[i+secoff]=pBuffer[i]; ??
}
STMFLASH_Write_NoCheck(secpos*STM_SECTOR_SIZE+STM32_FLASH_baseSTMFLASH_BUFSTM_SECTOR_SIZE/2);//寫入整個扇區??
}else?STMFLASH_Write_NoCheck(WriteAddrpBuffersecremain);//寫已經擦除了的直接寫入扇區剩余區間.? ???
if(NumToWrite==secremain)break;//寫入結束了
else//寫入未結束
{
secpos++; //扇區地址增1
secoff=0; //偏移位置為0? ?
??? pBuffer+=secremain;?? //指針偏移
WriteAddr+=secremain*2; //寫地址偏移 ???
??? NumToWrite-=secremain; //字節(16位)數遞減
if(NumToWrite>(STM_SECTOR_SIZE/2))secremain=STM_SECTOR_SIZE/2;//下一個扇區還是寫不完
else?secremain=NumToWrite;//下一個扇區可以寫完了
} ?
};
HAL_FLASH_Lock();??//上鎖
}

//從指定地址開始讀出指定長度的數據
//ReadAddr:起始地址
//pBuffer:數據指針
//NumToRead:字(32位)數
void?STMFLASH_Read(u32?ReadAddru16?*pBufferu16?NumToRead)???
{
u16?i;
for(i=0;i {
pBuffer[i]=STMFLASH_ReadHalfWord(ReadAddr);//讀取2個字節.
ReadAddr+=2;//偏移2個字節.
}
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-08-15?11:31??USB_Composite\
?????目錄???????????0??2017-08-15?15:36??USB_Composite\APP\
?????文件????????2944??2017-08-10?11:08??USB_Composite\APP\flash.c
?????文件?????????711??2017-08-10?10:41??USB_Composite\APP\flash.h
?????文件????????2838??2017-08-11?13:03??USB_Composite\APP\KEY.c
?????文件????????1381??2017-08-11?13:03??USB_Composite\APP\KEY.h
?????文件?????????386??2017-08-09?14:56??USB_Composite\APP\led.c
?????文件?????????262??2017-08-09?15:02??USB_Composite\APP\led.h
?????文件????????2210??2017-08-15?15:36??USB_Composite\APP\timer.c
?????文件?????????217??2017-08-01?14:45??USB_Composite\APP\timer.h
?????目錄???????????0??2017-08-15?11:31??USB_Composite\CORE\
?????文件???????24423??2015-10-30?17:22??USB_Composite\CORE\cmsis_armcc.h
?????文件??????103909??2015-10-30?17:22??USB_Composite\CORE\core_cm3.h
?????文件????????3620??2015-10-30?17:22??USB_Composite\CORE\core_cmFunc.h
?????文件????????3636??2015-10-30?17:22??USB_Composite\CORE\core_cmInstr.h
?????文件????????3662??2015-10-30?17:22??USB_Composite\CORE\core_cmSimd.h
?????文件???????16358??2016-04-25?17:17??USB_Composite\CORE\startup_stm32f103xe.s
?????目錄???????????0??2017-08-15?11:31??USB_Composite\HALLIB\
?????目錄???????????0??2017-08-15?11:31??USB_Composite\HALLIB\Inc\
?????目錄???????????0??2017-08-15?11:31??USB_Composite\HALLIB\Inc\Legacy\
?????文件??????176630??2016-04-25?22:54??USB_Composite\HALLIB\Inc\Legacy\stm32_hal_legacy.h
?????文件???????11612??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal.h
?????文件???????52075??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_adc.h
?????文件???????48934??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_adc_ex.h
?????文件???????38445??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_can.h
?????文件????????6955??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_can_ex.h
?????文件???????16212??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_cec.h
?????文件???????14651??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_conf_template.h
?????文件???????19962??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_cortex.h
?????文件????????6154??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_crc.h
?????文件???????10771??2016-04-25?22:43??USB_Composite\HALLIB\Inc\stm32f1xx_hal_dac.h
............此處省略158個文件信息

評論

共有 條評論