当前位置: 首页 > news >正文

精品网站欣赏北京最富裕的三个区

精品网站欣赏,北京最富裕的三个区,台州品牌设计公司,安阳论坛最新消息在单片机编程中,读写内部Flash存储器是一种常见的方法来实现断电数据存储。这里以STM32系列单片机为例,展示如何通过HAL库进行简单的内部Flash读写操作。 以下是一个完整的示例代码,展示了如何擦除、写入和读取内部Flash中的数据。请注意&am…

在单片机编程中,读写内部Flash存储器是一种常见的方法来实现断电数据存储。这里以STM32系列单片机为例,展示如何通过HAL库进行简单的内部Flash读写操作。

以下是一个完整的示例代码,展示了如何擦除、写入和读取内部Flash中的数据。请注意,在实际应用中,你需要根据具体的单片机型号调整Flash地址范围和其他配置。

#include "main.h"
#include "stm32f4xx_hal_flash.h"#define DATA_ADDRESS 0x080E0000 // Flash起始地址,需要根据具体芯片型号调整void SystemClock_Config(void);
static void MX_GPIO_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();uint32_t dataToWrite = 0xDEADBEEF;uint32_t readData;// Unlock the Flash to enable the flash control register accessHAL_FLASH_Unlock();// Erase the user Flash areaFLASH_EraseInitTypeDef eraseInitStruct;uint32_t pageError = 0;eraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;eraseInitStruct.PageAddress = DATA_ADDRESS;eraseInitStruct.NbPages = 1; // 根据实际情况调整页数if (HAL_FLASHEx_Erase(&eraseInitStruct, &pageError) != HAL_OK){// Error occurred while page erase.while (1);}// Program the user Flash area word by wordif (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, DATA_ADDRESS, dataToWrite) == HAL_OK){// Check the written valuereadData = *(__IO uint32_t*)DATA_ADDRESS;if (readData != dataToWrite){// Verify errorwhile (1);}}else{// Error occurred while writing data in Flash memory.while (1);}// Lock the Flash to disable the flash control register accessHAL_FLASH_Lock();// Infinite loopwhile (1){}
}/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Configure the main internal regulator output voltage*/__HAL_RCC_PWR_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM = 8;RCC_OscInitStruct.PLL.PLLN = 336;RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ = 7;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){// Initialization Errorwhile (1);}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK){// Initialization Errorwhile (1);}
}/*** @brief GPIO Initialization Function* @param None* @retval None*/
static void MX_GPIO_Init(void)
{/* GPIO Ports Clock Enable */__HAL_RCC_GPIOH_CLK_ENABLE();
}

说明:

  1. 解锁Flash:在写入或擦除Flash之前,必须先解锁Flash控制寄存器。
  2. 擦除Flash:使用HAL_FLASHEx_Erase函数擦除指定的Flash区域。注意,擦除操作是以页为单位进行的。
  3. 写入Flash:使用HAL_FLASH_Program函数将数据写入Flash。
  4. 锁定Flash:完成操作后,重新锁定Flash以防止意外修改。

请确保在实际项目中正确处理错误情况,并根据具体的应用场景调整代码。

http://www.yayakq.cn/news/656083/

相关文章:

  • 网站平台方案wordpress如何防止ddos
  • 淘客采集网站怎么做的wordpress密码爆破
  • 哪些网站可以做微商品牌宣传wordpress用户前端发文
  • 移动网站建设作业长沙网站建设工作室
  • 铜川网站建设报价怎么利用公司网站开发客户
  • 成都市城乡建设网站中国建设银行电脑版
  • 政务门户网站建设信息短视频网站如何做推广
  • seo 网站推广山东网站建设是什么
  • 公众号视频网站怎么做做一个网站 如何盈利
  • phpmysql网站开发实例外贸展示型网站建设公司
  • 地方宣传网站建设的必要性2023年8月份新冠症状
  • 免费建网站最新视频教程百度教育智能小程序
  • 广东企业网站建设公司哪些网站需要做分享按钮
  • 专门做旅游的网站网站优化联系
  • 涞水住房和城乡建设厅网站曲靖程序网站建设
  • 网站站外优化推广方式沈阳网站制作系统
  • 南昌网站小程序开发应用商店下载 安装正版
  • 湖南省建设信息网站网站展示型和营销型有什么区别
  • 深圳网站建设公司jsp网站做优化有什么好处
  • 太平洋电脑网官方网站好好建站
  • 网站建设备案审核要多久京东客网站怎么建设
  • 企业网站排名优化哪家好怎么在网站上做推广
  • 网站建设考评办法交易链接大全
  • 做网站有的浏览器设计师新手接单网站
  • 58同城北京网站建设赣榆县建设局网站
  • 湖北省级建设主管部门网站网站建站卡顿怎么办
  • 嵊州市住房和建设局网站公司网站包括哪些内容
  • 免费手机网页网站如何做网站产品图片
  • 上海创新网站建设前端实战项目11套
  • 自己怎么做网站首页黄埔定制型网站建设