[update] 增加STM32智慧宿舍基础代码

This commit is contained in:
solitary
2021-07-27 21:28:13 +08:00
parent 00dbbe55e3
commit 8b2c22efe2
952 changed files with 583792 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
/****************************************Copyright (c)****************************************************
**
** File name: humi.c
** Created by: Brown Lee
** Created date: 2020-10-16
** Version: v1.0
** Descriptions: The original
** Link address: https://blog.csdn.net/weixin_45006076
**
*********************************************************************************************************/
#include "flash.h"
//<2F><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʼ<EFBFBD><CABC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FLASH_ReadMoreData(uint32_t startAddress,uint16_t *readData,uint16_t countToRead)
{
uint16_t dataIndex;
for(dataIndex=0;dataIndex<countToRead;dataIndex++)
{
readData[dataIndex]=FLASH_ReadHalfWord(startAddress+dataIndex*2);
}
}
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD>(16λ<36><CEBB><EFBFBD><EFBFBD>)
uint16_t FLASH_ReadHalfWord(uint32_t address)
{
return *(__IO uint16_t*)address;
}
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ȫ<EFBFBD><C8AB>(32λ<32><CEBB><EFBFBD><EFBFBD>)
uint32_t FLASH_ReadWord(uint32_t address)
{
uint32_t temp1,temp2;
temp1=*(__IO uint16_t*)address;
temp2=*(__IO uint16_t*)(address+2);
return (temp2<<16)+temp1;
}
//<2F><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʼд<CABC><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FLASH_WriteMoreData(uint32_t startAddress, uint16_t *writeData, uint16_t countToWrite)
{
uint32_t dataIndex;
FLASH_EraseInitTypeDef User_Flash; //<2F><><EFBFBD><EFBFBD> FLASH_EraseInitTypeDef <20><EFBFBD><E1B9B9>Ϊ User_Flash
if(startAddress < FLASH_BASE || ((startAddress+countToWrite * 2) >= (FLASH_BASE + 1024 * FLASH_SIZE)))
{
return;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ַ
}
HAL_FLASH_Unlock(); //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
// offsetAddress=startAddress-FLASH_BASE; //<2F><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>0X08000000<30><30><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
// sectorPosition=offsetAddress/FLASH_SIZE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STM32F103VET6Ϊ0~255
//
// sectorStartAddress=sectorPosition*SECTOR_SIZE+FLASH_BASE; //<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
HAL_FLASH_Unlock(); //<2F><><EFBFBD><EFBFBD>Flash
User_Flash.TypeErase = FLASH_TYPEERASE_PAGES; //<2F><><EFBFBD><EFBFBD>Flashִ<68><D6B4>ҳ<EFBFBD><D2B3>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
User_Flash.PageAddress = startAddress; //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
User_Flash.NbPages = 1; //˵<><CBB5>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Min_Data = 1<><31>Max_Data =(<28><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>-<2D><>ʼҳ<CABC><D2B3>ֵ)֮<><D6AE><EFBFBD><EFBFBD>ֵ
uint32_t PageError = 0; //<2F><><EFBFBD><EFBFBD>PageError,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B1BB><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLASH<53><48>ַ
HAL_FLASHEx_Erase(&User_Flash, &PageError); //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(dataIndex=0;dataIndex<countToWrite;dataIndex++)
{
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,startAddress+dataIndex*2,writeData[dataIndex]);
}
HAL_FLASH_Lock();//<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
}

View File

@@ -0,0 +1,35 @@
/****************************************Copyright (c)****************************************************
**
** File name: flash.h
** Created by: XiaoYi
** Created date: 2020-10-16
** Version: v1.0
** Descriptions: The original
** Link address: https://blog.csdn.net/weixin_45006076
**
*********************************************************************************************************/
#ifndef __FLASH_H__
#define __FLASH_H__
#include "main.h"
#define FLASH_WRITE_START_ADDR 0x0800FC00 //<2F><><EFBFBD><EFBFBD>1K<31><4B><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FLASH_SIZE 64 //<2F><>ѡMCU<43><55>FLASH<53><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С(<28><>λΪK)
#if FLASH_SIZE < 256
#define SECTOR_SIZE 1024 //<2F>ֽ<EFBFBD>
#else
#define SECTOR_SIZE 2048 //<2F>ֽ<EFBFBD>
#endif
uint16_t FLASH_ReadHalfWord(uint32_t address);
void FLASH_ReadMoreData(uint32_t startAddress,uint16_t *readData,uint16_t countToRead);
void FLASH_WriteMoreData(uint32_t startAddress,uint16_t *writeData,uint16_t countToWrite);
#endif