• 2024-07-01STM32系列-时钟系统
  • 2024-07-017月1日 STM32F407VET6对Flash的入门学习(记录)
    1、Flash的使用之前必须对Flash进行擦除,不能直接写入进行覆盖。其原因是Flash的工作原理存储二进制的0和1,且只能实现从1到0的变化。这就意味着但Flash中已经烧入由0和1组成的文件后,无法直接再次烧入其他二进制文件。必须使用特定的函数将Flash中已存在的0和1全部转换成1,这个就
  • 2024-06-22ARM32开发--CRC循环冗余校验
    CRC循环冗余校验循环冗余校验码是一种用在数字网络和存储设备上的差错校验码,可以校验原始数据的偶然差错。CRC计算单元使用固定多项式计算32位CRC校验码。1.硬件CRC在单片机中,芯片具有专用的CRC计算单元,它是按照32位数据长度进行计算。它相当于是我们的MCU有个小
  • 2024-06-22分享一个go源码的均匀采样底层实现原理
    //int31n也就是下面这个函数,跟上面Int31n效果是一样的.但是效率更高.算法不一样.这个算法非常精彩,效率也更高.//int31nreturns,asanint32,anon-negativepseudo-randomnumberinthehalf-openinterval[0,n).//nmustbe>0,butint31ndoesnotcheckthis;
  • 2024-06-20HMAC与Hash算法——C语言实现
    hash算法是HMac的Mac hmacsha256.h1/**2*@filehmacsha256.h3*@authoryourname([email protected])4*@brief5*@version0.16*@date2024-06-207*8*@copyrightCopyright(c)20249*10*/1112#ifndef_HMAC_SHA_256_H_13#
  • 2024-06-20Go语言中的位运算符
    位运算(bitwiseoperations)是计算机科学中非常基础且重要的运算类型,它直接操作二进制位。Go语言中提供了一组位运算符,用于执行位级别的操作。Go语言中的位运算符按位与(&):作用:对两个操作数的每个位进行与运算,只有对应位都为1时,结果位才为1。示例:5&3(0101&0011=0001),结果
  • 2024-06-19鸿蒙内核源码分析(并发并行篇) | 听过无数遍的两个概念
    理解并发概念并发(Concurrent):多个线程在单个核心运行,同一时间只能一个线程运行,内核不停切换线程,看起来像同时运行,实际上是线程被高速的切换.通俗好理解的比喻就是高速单行道,单行道指的是CPU的核数,跑的车就是线程(任务),进程就是管理车的公司,一个公司可以有很多台车.并发
  • 2024-06-11华为云短信服务教你用C++实现Smgp协议
    本文分享自华为云社区《华为云短信服务教你用C++实现Smgp协议》,作者:张俭。引言&协议概述中国联合网络通信有限公司短消息网关系统接口协议(SGIP)是中国网通为实现短信业务而制定的一种通信协议,全称叫做ShortMessageGatewayInterfaceProtocol,用于在短消息网关(SMG)和服务提供商(SP
  • 2024-06-10【转载】C 语言有什么奇技淫巧
    快速范围判断经常要批量判断某些值在不在范围内,如果int检测是[0,N)的话:if(x>=0&&x<N)...众所周知,现代CPU优化,减分支是重要手段,上述两次判断可以简写为:if(((unsignedint)x)<N)...减少判断次数。如果int检测范围是[minx,maxx]这种更常见的形式的话,
  • 2024-06-08更改晶振后如何修改配置
    GD32官方提供的固件库中使用的晶振配置一般为8M或25M,如果读者使用其他频率的晶振如何修改配置呢?本文为大家讲解如何修改。以GD32F303为例,官方固件库中的晶振及时钟配置代码如下,改配置代码为使用外部8M晶振倍频到120M时钟。C/*useHXTAL(XDseriesCK_HXTAL=8M,CLseries
  • 2024-06-07CH582,CH592,CH57x系列芯片看门狗中断使用示例
    #include"CH58x_common.h"/**********************************************************************@fnDebugInit**@brief调试初始化**@returnnone*/voidDebugInit(void){GPIOA_SetBits(GPIO_Pin_9);GPIOA_ModeCfg(GPIO_Pin
  • 2024-06-04​ChiMetadata && ChiMetadataManager​
    目录ChiMetadatachiMetadata与metabuffer的调用关系ChiMetadata的成员变量ChiMetadata的成员函数解析ChiMetadataManagerChiMetadataManager的成员变量ChiMetadataManager的成员函数configure_stream过程中的metadataChiMetadatachiMetadata与metabuffer的调用关系
  • 2024-06-03std::numeric_limits::max和宏定义重复报错问题
    std::numeric_limits::max和宏定义重复报错问题问题描述今天在编译BeckhoffADS开源组件的时候发现编译报错,报错代码如下longAdsDevice::ReadReqEx2(uint32_tgroup,uint32_toffset,size_tlength,void*buffer,uint32_t*bytesRead)const{if(length>std::nume
  • 2024-05-27STM32_HAL_FLASH 模拟 EEPROM
    1.STM32FLASH简介STM32F407ZGT6的FLASH容量为1024K字节,STM32F40xx/41xx的闪存模块组织如图STM32F4的闪存模块由主存储器、系统存储器、OPT区域和选项字节等4部分组成。        主存储器,该部分用来存放代码和数据常数(如const类型的数据)。分为12个
  • 2024-05-23union存取低高位
    联合体类型,变量成员共用同一内存,同一时刻只能保存一个成员的数据。以1个4字节数据,传递r\g\b为例#include<stdint.h>#include<iostream>intmain(){uint32_tmyV;//用于模拟值传递//写{union{struct{
  • 2024-05-22hidl实现hal
    一、前言正如AndroidHIDL概述一文中简单的对HIDL的演进和新架构下Framework与Hal层之间的通信做了介绍。但是笔者的目的是想完整的实现从上层APP到hal之间通信过程,由此可以更加深刻的理解这种机制。  二、BinderizedMode(绑定式)简介从上文介绍,我们
  • 2024-05-21qt之点的绘制示例demo
    #include"mainwindow.h"#include"ui_mainwindow.h"#include<QPainter>#include<QColor>QColorm_color;intm_x=0;intm_y=0;intm_w=0;intm_h=0;MainWindow::MainWindow(QWidget*parent):QMainWindow(parent)
  • 2024-05-15stm32f103c8t6对flash进行操作,Hal库,擦除1页数据大小,写入128字节大小,读取指定地址128字节大小,bootloader准备工作
    参考这篇:STM32IAP应用开发——自制BootLoader-CSDN博客把工程转到HAL库使用的函数,用HAL自带的HAL_FLASHEx_EraseHAL_FLASH_Program 串口显示结果 验证没问题flash在hal库使用的驱动程序#include"flash.h"externvoidFLASH_PageErase(uint32_tPageAddress);//
  • 2024-05-10BIKE decode.c
    /******************************************************************************BIKE--BitFlippingKeyEncapsulationCopyright(c)2021NirDrucker,ShayGueron,RafaelMisoczki,TobiasOder,TimGueneysu,JanRichter-Brockmann.Contact:drucker.nir@g
  • 2024-05-10BIKE decode.h
    /******************************************************************************BIKE--BitFlippingKeyEncapsulationCopyright(c)2021NirDrucker,ShayGueron,RafaelMisoczki,TobiasOder,TimGueneysu,JanRichter-Brockmann.Contact:drucker.nir@g
  • 2024-05-08位运算骚操作
    位运算骚操作异或操作异或运算性质1)异或运算就是无进位相加2)异或运算满足交换律、结合律,也就是同一批数字,不管异或顺序是什么,最终的结果都是一个3)0^n=n,n^n=04)整体异或和如果是x,整体中某个部分的异或和如果是y,那么剩下部分的异或和是x^y骚操作交换两个数voidexchange(
  • 2024-05-06【GD32】---- 移植工程模板
    1新建模板文件夹新建一个名叫03_GD32TemplateProject的文件夹,用于建造工程模板2移植官方库文件在模板文件夹里新建5个文件夹,分别存放官方库文件和系统驱动文件01_main存放main函数02_Startup存放系统启动文件03_System存放官方的系统文件04_Firmware_PeripheralD
  • 2024-05-03SDL库基础学习
    初始化intSDL_Init(Uint32flags);*`flags`maybeanyofthefollowingOR'dtogether:**-`SDL_INIT_TIMER`:timersubsystem*-`SDL_INIT_AUDIO`:audiosubsystem*-`SDL_INIT_VIDEO`:videosubsystem;automaticallyinitializestheevents*
  • 2024-04-24程序的机器级表示
    常数,变量和运算一、常数intf(){return0x123;/*291*/}intg(){return-1;}inth(){return0x1234;/*4660*/}inti(){return0xbb8;/*3000*/}在C中看这些常数如何被装入计算机中,首先看0x123,十进制表示为291,正好可以被addi的立即数表示,反汇编结果如下
  • 2024-04-19程序执行和模拟
    一、freestanding在之前的学习中都是在linux进行编译。那么从学习的角度看还是freestanding比较简单,图中_start这个程序是作为死循环的,输出一个A后处于while(1)的循环状态。 那么如果我们在freestanding中进行编译呢?要在freestanding中编译首先要明白一个问题,程序如何结束运