指针 8位转32 的读写技巧

STM32G0系列的Flash标志位PGSERR和PGAERR上电置位 此篇博客主要讲解STM32G0系列的Flash操作,没啥技术含量,老鸟直接发过就好了。 首先将Flash怎么操作,然后再讲标题中的问题及解决思路。 一、Flash操作 我建议大家先看编程手册的Flash这章,等有一个操作Flash的大概的流程概念(不需要 记住所有的操作步骤,因为有库),再去看库操作历程(这是我个人的习惯,只是给大家 提个建议)。 1、首先来看Flash基本知识 ... 阅读详情

关键是把unsigned char *转换成unsigned int *

读操作:

static void read_buf(u_char *buf, int len)
{   
    unsigned int idx,num;
    num = (len>>2);
    for (idx=0; idx< num; idx++)
        ((u_int*)buf)[idx] = reg32(reg);       

    //余数
    for (idx= num<<2; idx< len ; idx++)
        buf[idx] = reg8(reg);

}

 

写操作:

static void write_buf(const u_char *buf, int len)
{
    unsigned int idx,num;
    num = (len>>2);
    for (idx=0; idx< num; idx++)
        reg32(reg) = ((u_int*)buf)[idx];       

    //余数
    for (idx= num<<2; idx< len ; idx++)
        reg8(reg) = buf[idx];

}

STM32位带操作实现GPIO输入输出 文章目录前言一、示意图二、位带区1.外设位带区2.SRAM 位带区3.统一公式三、GPIO 位带操作1.GPIO 寄存器映射2. GPIO 位操作3. 主函数四、下载验证五、收获1.初学者写一部分代码,编译一部分, 不要等到写完一起编译。2.位带操作可以实现操作寄存器的某一位不改变其他位。 前言 位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。51 单片机中通过关键字 sbit 来实现位定义,STM32 没有这样的关键字,而是通过访问位带别名区来实现。 提示:以下是本篇文章正文. 阅读详情

相关推荐

SPI通信实战:如何高效发送16位和8位数据(附STM32 HAL库代码示例)

本文深入探讨了在STM32 HAL库框架下,如何根据外设需求高效实现SPI通信中8位与16位数据的发送。文章对比了两种核心策略:配置为16位数据帧模式的硬件高效传输,以及在8位模式下通过软件拆分字节的兼容性方案,并提供了可直接复用的代码示例和调试技巧,帮助开发者优化通信效率与可靠性。

842

指针操作--4个8位数重组为1个32位数据

#include<stdio.h> typedef unsigned char int8; typedef unsigned int int32; int8 input[5] = {1,1,1,1,0}; int32 hst(int8 *ndsk) { int32 m = 0; int8 *h = (int8 *)&m; h[0] = ndsk[0...

weixin_45045399的博客 3271

逐飞科技STC32G12K128开源库进阶(指针强转实现复杂数据类型存储)

本文详细介绍了基于逐飞科技STC32G12K128开源库,通过指针强制类型转换实现复杂数据类型(如浮点数、结构体)在EEPROM中的高效存储与管理。重点讲解了按键调参场景下的参数存储方案,包括数据校验、错误恢复机制及性能优化技巧,帮助开发者提升嵌入式系统的数据存储可靠性。

cuda7parallel的博客 965

u8*强制转换成u32*

一个u8类型的数组,指针p指向该数组的第一个元素,p的类型是u8*,指针q也指向该数组的第一个元素,q的类型是u32*,问*p和*q的值是多少? typedef unsigned long u32; typedef unsigned short u16; typedef unsigned char u8; int main(void) { u8 i; u8...

weixin_30340353的博客 7307

国民技术N32G030K8L7内部FLASH读写避坑指南:从解锁、擦除到32位写入的完整流程

本文深入解析国民技术N32G030K8L7 MCU内部FLASH的读写操作,从解锁、擦除到32位写入的完整流程,揭示常见陷阱与解决方案。通过实战案例和代码示例,帮助开发者规避数据错位、硬件错误等问题,提升FLASH操作的可靠性和效率。

Pitbull2014的博客 399

易语言64位游戏内存读写实战:从零搭建传奇4辅助工具(含防更新技巧)

本文详细讲解如何使用易语言进行64位游戏内存读写,以传奇4为例,从基础准备到实战操作,涵盖内存定位、数据读写及防更新技巧。重点介绍64位寄存器架构、Cheat Engine工具链配置及易语言API实现,帮助开发者构建稳定的游戏辅助工具。

weixin_30555125的博客 548

06C语言中的指针(初级)

本章来认识一下指针,先对指针有个大体的了解。指针是C语言中最重要的内容,因为可以直接通过指针来操控计算机的内存,其次,指针也可以与数组、函数结合,产生很多有趣的组合,这些内容在之后的指针(进阶)章节中再详细说明。 文章目录一、指针是什么二、指针和指针的类型2.1野指针三、指针的运算四、指针和数组五、二级指针六、指针数组总结: 一、指针是什么 在第一章初识C语言中已经了解过,在此简单提一下: 指针(Pointer)是编程语言中的一个对象,它存放的是另一个变量的内存地址,通过这个地址可以直接找到该变量。

精致的灰的博客 729

FPGA异步FIFO实战:读写位宽转换与数据流控制

本文深入探讨FPGA异步FIFO在读写位宽转换与数据流控制中的实战应用。通过分析时钟域隔离、数据重组和流控协商等核心挑战,提供硬件架构设计、跨时钟域同步方案及验证策略,帮助开发者解决CMOS传感器与DSP处理单元等场景下的数据对齐问题,实现高效稳定的数据流控制。

weixin_30673611的博客 286

【保姆级讲解】C语言---指针精华

指针 1.1 内存地址的理解 计算机中的存储地址是以字节为单位的一片连续的存储空间,每一块空间都由自己唯一的一个地址编号(非负整数,从1开始自然增长),也叫字节编址。计算机中使用16进制来表示地址编号。 手机128G内存 128是128G字节空间(一个字节为8个位); 正在上传…重新上传取消 这里的0X01 0X02 0X03地址编号类比于生活:主卧床头柜从上第二个抽屉中有块手表; 0X01 0X02 0X03(编号) =======主卧床头柜从上第二个抽屉(描述)=====地址值; ..

weixin_51177279的博客 1992

32位格式化字符串漏洞利用:从原理到实战的任意内存读写

格式化字符串漏洞是二进制安全领域的经典漏洞类型,其核心原理在于格式化函数(如printf)对用户输入的处理不当,导致程序信任了本不应信任的数据。该漏洞允许攻击者利用格式化指示符(如%x、%s)读取栈内存,实现信息泄露;更关键的是,通过%n系列格式化符,攻击者可以将已输出的字符数写入指定内存地址,从而实现任意内存写。这种能力在漏洞利用中价值巨大,因为它可以直接修改关键数据(如函数指针、返回地址)来劫持程序执行流。在32位环境下,由于参数完全通过栈传递,攻击者可以精确控制写入地址,使得利用过程具有高度的确定性和

weixin_30919571的博客 420

从8位MCU迁移到32位Arm:PIC32CM实战指南与思维转换

在嵌入式系统开发中,微控制器(MCU)的选型直接影响产品的性能与功能上限。随着物联网、智能硬件等应用对处理能力、外设资源及功耗管理的要求日益提升,传统的8位MCU在内存、主频及生态支持上逐渐显现局限。其原理在于8位架构的地址空间、中断机制及开发工具链较为简单,虽成本低廉,但难以高效支撑复杂任务。技术价值上,迁移至基于Arm Cortex-M内核的32位MCU(如Microchip PIC32CM系列)能显著提升性能,同时保持较低的学习与硬件成本。这类芯片提供更大的内存、更高的运行效率、丰富的外设(如高速AD

cnmik42448的专栏 326

C语言(*(volatile unsigned CHAR *)addr)理解

嵌入式中C语言操作寄存器看ARM程序时,会看到类似如下的代码:#define SREG (*(volatile unsigned CHAR *)0x5F)在嵌入式系统编程中,一般要求程序员能够利用C语言访问固定的内存地址。按C语言的语法来看,这个地址应该由指针类型来表示,所以在操作某个内存地址,比如0x5c时,其步骤如下: 将地址强制转换为指针类型 ->(unsigned CHAR * )

Welljia的专栏 1万+

GIS国土工具实战:从地类分析到坐标转换,一站式解决项目难题

本文详细介绍了GIS国土工具在国土整治项目中的高效应用,涵盖地类分析、坐标转换、影像加载等核心功能。通过实战案例展示如何利用该工具快速处理shp与txt文件转换、智能比对三调二调数据,以及优化影像加载策略,显著提升项目效率。特别适合需要处理复杂国土数据的专业人员使用。

weixin_28732953的博客 334

Linux GCC 64位编程技巧

linux GCC 64位编程技巧 64位系统的优势? 既然要采用64位系统,首先要知道64位系统的优势所在。对于技术人员来说,完全没有必要去看那些厂家拿出的厚厚的说明书、或者某个研究机构抛出的一堆的数字,64位系统的优势总结起来很简单:内存大、速度快! 内存大 与32位系统相比,64位系统的地址空间大大增大,达到了18PB,18PB究竟是多大呢?说出来有点吓人:4G内存的40亿倍!这...

weixin_34044273的博客 264

LVGL hal indev(porting evdev)

LVGL中对输入设备的管理是单例实现的,而在Linux的输入设备是多个的,所以需要对其进行改造成多例实现。

Bigan(安)的博客 3345

DaVinci Developer和DaVinci Configurator:AutoSAR开发与配置工具

a. 组件创建:DaVinci Developer允许开发人员创建不同类型的AutoSAR软件组件,如应用软件组件(Application Software Component,SWC)、基础软件组件(Basic Software Component,BSWC)等。除了以上功能,DaVinci Developer和DaVinci Configurator还提供了丰富的文档和代码生成功能,以支持开发人员和配置人员进行文档编写、代码生成和文档浏览等任务。用户可以根据具体需求对软件组件进行灵活的配置。

HmoaAmp的博客 2262

32位程序与64位程序区别

转自:http://www.cnblogs.com/aHuner/p/3336028.html 32位系统由于采用了物理地址扩展技术,使得操作系统可用物理内存能够超过4G,但对于单个程序来说,能够使用的内存(即地址空间)还是只有4G。GCC编译时加上-m32参数。 64位的内存容量大大增加,从4G扩展到18PB,可以在内存中存放更多的数据,避免频繁的磁盘读写IO,从而大大提

`小明湖畔.。のBlog 2462

项目模块提取生成jar包上传到nexus供其他项目使用

项目场景: 微服务项目当中的某一个模块其他项目进行复用,资源管理搭建的有私服 nexus。 问题描述: 如果把功能用到其他项目,代码重复量太大,不想些重复的代码。 原因分析: 如果把这个模块单独提取出来进行复用,至于操作数据库的功能,使用远程调用进行数据库操作,这样就能解决相同模块重复编写的工作。量。 解决方案: 首先对模块代码进行封装提取,把一些用到的参数提取出来,以传参的形式来对参数进行传递。这个需要根据具体的情况进行代码提取,提取之后把这个模块的代码进行打包,打包可以借助开发工具进行打包(记得使用 d

lierjun 的专栏 450

STM32F103 HAL库读写内部Flash避坑指南:解决8位数据写入的兼容性问题

本文详细解析了STM32F103 HAL库在读写内部Flash时遇到的8位数据写入兼容性问题,提供了完整的解决方案和通用读写函数实现。通过深入分析HAL库底层机制,开发者可以避免常见错误,掌握正确的数据类型转换技巧和性能优化方法,实现稳定可靠的Flash存储操作。

weixin_30920597的博客 608

【AI大模型:前沿】41、建筑行业大模型创业全指南:从技术突破到成本控制与落地路径

建筑行业大模型是“高门槛、高回报”的长周期赛道,适合有建筑行业资源+AI技术背景的团队切入。数据是基础,场景切割是策略,合规是底线。通过聚焦“设计生成+规范审查”等刚需场景,用“仿真数据+开源模型”降低成本,3-5年内有望成长为行业独角兽。对于中小团队,避开千万级全流程模型的红海,深耕“小而美”的单点工具,同样能实现盈利与快速扩张。关键成功公式建筑AI创业 = 50%数据壁垒构建 + 30%场景精准切入 + 20%成本控制能力。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2114

20、基于图神经网络的脱氢焓预测方法研究

本文研究了基于图神经网络(GNN)的液态有机氢载体(LOHC)材料脱氢焓预测方法。通过分析现有GNN方法的局限性,提出了一种新的聚合自节点表示(AWS)方法,并结合丰富的原子特征和集成学习策略,显著提高了预测性能。实验结果表明,AWS在脱氢焓预测和多个基准化学性质预测任务中均优于现有GNN方法。此外,基于分子结构的集成方法进一步提升了模型的鲁棒性和准确性。研究展示了该方法在筛选LOHC材料中的潜力,并为未来预测更多化学性质奠定了基础。

pp12345的博客 103

8.1指针用法初识

8.1 指针用法初识 8.1 指针用法初识 一、指针是什么 (一) 含义 (二) 通过一个简单程序来认识指针 深层理解 p = &i; 指针与指针变量 二、指针的重要性 三、指针的定义与分类 概况 (一) 基本类型指针 初识 基本类型指针的常见错误 读写修改未分配权限空间的值 野指针 基本类型指针案例——互换两个数字 1. 不用函数 2. 不用指针的函数能否实现数字互换呢? 3. 用指针写函数互换两个变量的值 附注 (二) 指针和数组 (三) 指针和函数

qq_42453941的博客 716

Python爬虫实战:利用Playwright+Asyncio高效获取淘宝商品价格变化曲线

本文将详细介绍如何使用Python最新技术栈(Playwright+Asyncio)构建一个高效的淘宝商品价格监控爬虫系统。我们将从爬虫基础知识讲起,逐步深入到反爬应对策略、数据存储与分析,最终实现价格变化曲线的可视化展示。文章包含完整的代码实现和详细的技术解析,适合中高级Python开发者学习参考。关键词:Python爬虫、Playwright、Asyncio、淘宝价格监控、数据可视化支持多浏览器(Chromium, Firefox, WebKit)更快的执行速度更丰富的API。

2201_76125261的博客 244
上一篇: 关于spi的半双工读写和全双工读写 spi.c spidev.c spidev_message() struct spi_ioc_transfer
下一篇: 英语听力http://forum.putclub.com/
#Page#
博客等级 码龄23年 1691粉丝 360原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值