阿里云服务器可以做多少个网站客户管理软件

bicheng/2026/1/22 3:00:34/文章来源:
阿里云服务器可以做多少个网站,客户管理软件,简述网站开发具体流程,网站建设的pptSTM32G030是F0系列的升级版#xff0c;其在性能上比F0要好很多#xff0c;具体G0参数如下#xff1a; 最开始做项目选用的单片机是STM32F030F4P6#xff0c;但是在后期使用中发现#xff0c;我的FLASH#xff08;16K#xff09;不够用了#xff0c;就选择了STM32G030F6…STM32G030是F0系列的升级版其在性能上比F0要好很多具体G0参数如下 最开始做项目选用的单片机是STM32F030F4P6但是在后期使用中发现我的FLASH16K不够用了就选择了STM32G030F6P6来进行项目使用主要是价格便宜资源够用。 在F030使用的flash拿到G030上来发现不可使用就进行了一些修改但是这个时候就出现了报错在进行flash擦除的时候报错 HAL_FLASHEx_Erase(EraseInitStruct,PageError); 通过发现擦除有问题我就去查看其底层函数。 HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError) {HAL_StatusTypeDef status;uint32_t index;/* Check the parameters */assert_param(IS_FLASH_TYPEERASE(pEraseInit-TypeErase));/* Process Locked */__HAL_LOCK(pFlash);/* Reset error code */pFlash.ErrorCode HAL_FLASH_ERROR_NONE;/* Wait for last operation to be completed */status FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);if (status HAL_OK){ #if !defined(FLASH_DBANK_SUPPORT)/* For single bank product force Banks to Bank 1 */pEraseInit-Banks FLASH_BANK_1; #endif /* FLASH_DBANK_SUPPORT */if (pEraseInit-TypeErase FLASH_TYPEERASE_MASS){/* Proceed to Mass Erase */FLASH_MassErase(pEraseInit-Banks);/* Wait for last operation to be completed */status FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);}else{/*Initialization of PageError variable*/*PageError 0xFFFFFFFFU;for (index pEraseInit-Page; index (pEraseInit-Page pEraseInit-NbPages); index){/* Start erase page */FLASH_PageErase(pEraseInit-Banks, index);/* Wait for last operation to be completed */status FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);if (status ! HAL_OK){/* In case of error, stop erase procedure and return the faulty address */*PageError index;break;}}/* If operation is completed or interrupted, disable the Page Erase Bit */CLEAR_BIT(FLASH-CR, FLASH_CR_PER);}}/* Process Unlocked */__HAL_UNLOCK(pFlash);/* return status */return status; } 其大致意思就是两种擦除方式片擦除以及全部擦除。然后发现其status是在  FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);   里面进行报错其函数实现如下: HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) {uint32_t error;/* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.Even if the FLASH operation fails, the BUSY flag will be reset and an errorflag will be set */uint32_t timeout HAL_GetTick() Timeout;/* Wait if any operation is ongoing */ #if defined(FLASH_DBANK_SUPPORT)error (FLASH_SR_BSY1 | FLASH_SR_BSY2); #elseerror FLASH_SR_BSY1; #endif /* FLASH_DBANK_SUPPORT */while ((FLASH-SR error) ! 0x00U){if (HAL_GetTick() timeout){return HAL_TIMEOUT;}}/* check flash errors */error (FLASH-SR FLASH_SR_ERRORS);/* Clear SR register */FLASH-SR FLASH_SR_CLEAR;if (error ! 0x00U){/*Save the error code*/pFlash.ErrorCode error;return HAL_ERROR;}/* Wait for control register to be written */timeout HAL_GetTick() Timeout;while ((FLASH-SR FLASH_SR_CFGBSY) ! 0x00U){if (HAL_GetTick() timeout){return HAL_TIMEOUT;}}return HAL_OK; } 发现其在这里进行报错然后从下面返回错误码上来。 返回我打印了这个error到底是多少发现其值为0x80发现报的错误是   FLASH_SR_PGSERR 然后查看数据手册以及使用手册发现这个是编程错误。然后继续查找问题发现G030的一个bank是2K修改之后发现还是报这个错误。 在详细查看数据手册后发现G030进行Flash读写是uint64_t进行读写的如下 在此情况下对读写函数进行修改将数据等改为uint64_t。在将这些修改过后发现问题没有在flash擦除那里进行报错而是在FLASH写入那里卡死。 HAL_FLASH_Program(FLASH_TYPEPROGRAM_FAST,addr,Data[i])!HAL_OK 上述函数错误的地方是        FLASH_TYPEPROGRAM_FAST   因为其意思是32位写 Fast program a 32 row double-word (64-bit) at a specified address 但是手册给出是64位写所以这里进行了报错然后将这里改成下面函数整个程序的读写就没有问题了在此问题就得到了解决。 HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD,addr,Data[i])!HAL_OK 以下则是G030F6P6单片机的FLASH的程序 读 /******************************************************************************* * Function Name : 读取Flash数据 * Description : Read packed message form flash * Input : buff:point to first location of received buffer.length:Maxmum length of reception * Output : * Return : reception length *******************************************************************************/ uint16_t Read_Flash( uint64_t *Data, uint16_t num, uint32_t addr) {uint16_t i0;uint32_t add0;if(num 0){return 0;}add addr;i0;while((add FLASH_USER_END_ADDR1) (inum)){Data[i] *(__IO uint64_t *)add;add add8;}return i; } 写 /******************************************************************************* * Function Name : Flash写数据 * Description : Write a group of datas to flash. * Input : buff:pointer of first data, length: write length * Output : * Return : true/false *******************************************************************************/ uint16_t Write_Flash( uint64_t *Data , uint16_t num, uint32_t add) {uint16_t i0;uint32_t addr0;FLASH_EraseInitTypeDef EraseInitStruct{0};uint32_t PageError0;//擦除错误地址EraseInitStruct.TypeErase FLASH_TYPEERASE_PAGES;//仅擦除页EraseInitStruct.Banks FLASH_BANK_1;EraseInitStruct.Page 15; //注该page为0-15页EraseInitStruct.NbPages 1; //擦除一页HAL_FLASH_Unlock();HAL_FLASHEx_Erase(EraseInitStruct,PageError);if(PageError ! 0xFFFFFFFF) {return 1;}addr add;i0;while((addr FLASH_USER_END_ADDR1) (inum)){if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD,addr,Data[i])!HAL_OK){addr addr 8;}else{i;}}HAL_FLASH_Lock();return 0; } 在这里使用的是uint64_t进行数据的读写但是如果用在其他程序就会出现error。因为单片机是32位的出现uint64_t参与的函数就报错。 在这里我写了一个简易的flash内存管理因为我们在写flash数据的时候往往很多数据并不是单一数据但是每写一次flash则需要进行flash擦除我这里采用一个数组进行使用如下 实现原理一次性读取一定数量的数据出来将自己需要的数据修改过后再讲修改后的数据全部写入在实际项目中还是比较实用的。 读 /* ********************************************************************************************************* * 函 数 名uint8_t data_read(uint16_t *data,uint16_t datalen,uint16_t save_addr,uint32_t bank_addr) * 功能说明数据读取 * 形 参data 数据 datalen 长度 save_addr数组中保存的地址 bank_addr 地址 * 返 回 值 ********************************************************************************************************* */ uint8_t data_read(uint16_t *data,uint16_t datalen,uint16_t save_addr,uint32_t bank_addr) {uint64_t buf[READ_NUM]{0}; //根据实际数据量进行设置if(datalen 0){return 1;}Read_Flash(buf,READ_NUM,bank_addr); //读数据for(int i0;idatalen;i) //数据更新{data[i] buf[save_addri];}return 0; } 写 /* ********************************************************************************************************* * 函 数 名uint8_t data_save(uint16_t *data,uint16_t datalen,uint16_t save_addr,uint32_t bank_addr) * 功能说明数据保存 * 形 参data 数据 datalen 长度 save_addr数组中保存的地址 bank_addr 地址 * 返 回 值 ********************************************************************************************************* */ uint8_t data_save(uint16_t *data,uint16_t datalen,uint16_t save_addr,uint32_t bank_addr) {uint64_t buf[READ_NUM]{0}; //根据实际数据量进行设置if(datalen 0){return 1;}Read_Flash(buf,READ_NUM,bank_addr); //读数据if(buf[0]0xffffffff){for(int i0;iREAD_NUM;i){buf[i] 1;}Write_Flash(buf,READ_NUM,bank_addr); //写数据}for(int i0;idatalen;i) //数据更新{buf[save_addri] data[i];}Write_Flash(buf,READ_NUM,bank_addr); //写数据return 0; } 其他宏定义相关代码 //数组大小 #define READ_NUM 30 //地址 #define ADDR_FLASH_PAGE_0 ((uint32_t)0x08000000) //第一页 #define ADDR_FLASH_PAGE(n) (ADDR_FLASH_PAGE_0 (uint32_t)(n)*FLASH_PAGE_SIZE)#define FLASH_USER_PAGE_NUM 1 #define FLASH_USER_START_ADDR1 ADDR_FLASH_PAGE(16-1) #define FLASH_USER_END_ADDR1 (FLASH_USER_START_ADDR1 FLASH_USER_PAGE_NUM*FLASH_PAGE_SIZE) 基本上可以实现功能主要的问题就是那个必须64位读写不然数据就有问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站首页的图片怎么缩小网站权重是怎么提升的

文章目录 一、阈值处理1.1 OpenCV 提供了函数 cv2.threshold()和函数 cv2.adaptiveThreshold(),用于实现阈值处理1.1.1. cv2.threshold():(1)在函数cv2.threshold()中,参数threshold_type用于指定阈值处理的方式。它有以下几种可选的阈值类型…

哪些企业需要做网站网站过度优化的表现

海康摄像头是当前市场上非常受欢迎的一种监控设备,其可以在各种场合下发挥出极佳的作用。不过,对于初次使用该设备的人来说,设置其ip地址往往比较困难。虎观代理小二二将会详细介绍海康摄像头ip地址设置的具体步骤,帮助大家轻松解…

新密郑州网站建设龙华网站建设-信科网络

先说使用场景,一次加载很多数据造成小程序卡顿的问题 ,找了好多都没有好的解决办法,要么太过复杂,然后研究了两天通过简单的办法实现,先根据数量把高度撑开,然后根据滚动位置渲染指定的数据就可以了&#x…

海天建设集团公司网站单人做网站

场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器)。后端推送数据的解决方案有很多,比如轮询、Comet、WebSocket。1. 轮询对于后端来说开发成本最低,就是按照传统的方式处理Ajax请求并返回数据,在学校的时候实验室的项目一…

大连网站设计九即问仟亿科技网站配色方案橙色

Hi,大家好我是tom,I am back.今天要给大家讲讲linux系统一些性能相关命令。 1.fdisk 磁盘管理 是一个强大的危险命令,所有涉及磁盘的操作都由该命令完成,包括:新增磁盘、增删改磁盘分区等。 1.fdisk -l 查看磁盘分区情况 Disk /dev/sda: 27.8…

沈阳建设银行网站网站定制一般价格多少

plotly3D (3d charts in Python)可以画3维图形 在做圆柱的3D装箱项目,需要装箱的可视化,但是Mesh (3d mesh plots in Python)只能画三角形,所以需要用多个三角形拼成一个圆柱(想做立…

高端网站的设计开发公司电子产品外观设计

转载自 本想试试看,结果却拿到了京东的Offer 最近,春招已经基本接近尾声了,我找了几位拿到名企Offer的粉丝,请他们总结了面试经验,近期会分批的推送给大家。希望给那些正在准备秋招的同学提供些帮助。 今天给大家分享的…

北京微信网站建设电话咨询在哪个网站做视频可以赚钱

概述 在实际业务中总有一些字段内容是逗号分隔的,然后后续业务需要扩展时就很难受; 所以一般在这种情况下都是需要建立关联表,将字段内容拆分; 当前使用mysql版本 8.0.32 拆分demo 这里要注意mysql.help_topic表的记录行数&a…

企业门户网站模板中文绿色环保网站模板

倒计时47天! 深度优先搜索——DFS 温馨提示:学习dfs之前最好先了解一下递归的思想。 DFS基础——图的遍历 仙境诅咒 问题描述 在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有自己独特的修炼之道…

网站免费建站性盈盈影院重庆网站推广哪家好

有时候一道大水题,因为英文描述可能有点复杂或者其它云云, 就比如那道PRO。。 别先被一道题吓一跳,,, 英文描述看深入一点总归会能解决的,尽可能多的考虑情况。大胆尝试。转载于:https://www.cnblogs.com/c…

有没有如何做网站的书深圳wap网站建设

目录 Java后端接收数据 第一章、后端不写任何注解情况下接收参数1.1)后端不写注解postman发出get请求1.2)后端不写注解postman发出post请求 第二章、后端写RequestParam注解接收参数2.1)postman发出post请求2.2)postman发出get请求…

rdm响应式网站开发app外包平台大概多少钱

目录 键盘上三个特殊的键 Print Screen(或 Prt Scn) Scroll Lock(或 Scr Lk) Pause/Break ​​​​​​​ 键盘上三个特殊的键 通过前几期的文章,我们已经讨论了几乎所有可能要用到的键。但为了真正彻底地了解键盘&…

贵州住房和城乡建设部网站棒的网页设计

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 关键特性和操作包括: 提交任务: 查询完成状态: 等待结果: 取消任务&#xff1a…

做橡胶应该看什么网站英文网站设计公司

前言:这一节设想完成的功能为进入小程序后请求授权信息,用户授权登录后,弹出宠物登记页面,并根据宠物类型播放背景音乐 小程序昵称头像在之前的版本获取规则为触发后弹出用户授权弹窗,授权后可直接获取用户头像和昵称&…

化妆品电商网站模板开个广告公司大概需要多少钱

文章目录 前言版本说明测试 Demo1、自定义过滤器 DemoFilter2、自定义业务异常 ServiceException3、自定义异常处理类 DemoExceptionHandler4、DemoController5、请求测试 问题分析1、日志打印记录2、Debug 方法 解决方案1、修改自定义过滤器2、请求测试 解决方案分析1、日志打…

金山网站建设推广什么网站管理系统好

Docker安装 安装CentOS 7 VirtualBox安装CentOS 7,网络设置为桥接网卡,确保虚拟机能访问外网,且宿主机与虚拟机能相互ping通 安装docker yum update -yyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager -…

那里做网站最好东莞四网合一网站建设

C设计模式是一套被广泛认可的用于解决常见对象导向设计问题的最佳实践。设计模式可以帮助开发者编写更加清晰、可维护和可扩展的代码。设计模式通常分为三大类:创建型、结构型和行为型。下面,我将分别介绍这三类设计模式的概念、应用场景和C实现示例。 …

企业网站php源码各大手机官网

20%的商品贡献了80%的销售金额,你会不会想知道这些商品的销售金额、毛利、销售金额累计占比、毛利累计占比,会不会想知道这些商品在各个门店的销售表现?看是否能进一步提高销售金额,提高毛利。这样的报表该怎么做?奥威…

东莞企业网站公司更改wordpress链接数据库

前言:目前市面上有挺多JAVA的日志框架,比如JUL(JDK自带的日志框架),Log4j,Logback,Log4j2等,有人可能有疑问说还有slf4j,不过slf4j不是一种日志框架的具体实现,而是一种日志门面(日志门面可以理解为是一种统…

网站设计与开发专业网站怎么做微信分享

目录 ZooKeeper 的定义ZooKeeper 的特点ZooKeeper 的应用场景你觉得Zookeeper比较重要的功能ZooKeeper 的选举机制 ***zookeeper主节点故障,如何重新选举?ZooKeeper 的监听原理 ***zookeeper集群的节点数为什么建议奇数台 ***ZooKeeper 的部署方式有哪几…