C语言内存管理
C语言为内存的分配管理提供了以下几个函数。这些函数可以在<stdlib.h>头文件中找到。 序号 函数和描述 1 void *calloc(int num, int size);该函数分配一个带有 function allocates an array of num 个元素的数组,每个元素的大小为 size 字节。 2 void free(void *address);该函数释放 address 所指向的h内存块。 3 void *malloc(int num);该函数分配一个 num 字节的数组,并把它们进行初始化。 4 void *realloc(void *address, int newsize);该函数重新分配内存,把内存扩展到 newsize。 1. 动态分配内存编程时,如果我们预先知道数组的大小,那么定义数组时就比较容易。例如,一个存储人名的数组,他最多容纳100个字符,所以您可以定义数组: char...
C中的存储类
C语言存储类存储类定义C程序中变量/函数的范围(可见性)和生命周期。这些说明符放在它们所修饰的类型前之前。 1. auto 存储类auto存储类是所有局部变量默认的存储类。 1234{ int mount; auto int month;} auto只能用在函数内,即auto只能修饰局部变量。 2. register 存储类register存储类用于定义存储在寄存器中而不是arm中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个字节),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。 1234{ register int miles;} 3. static 存储类static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。 static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。 在...
如何生成ssh keys
当我们部署hexo出现 1git@github.com: Permission denied (publickey). fatal: Could not read from remote repository 这是我们的SSH秘钥没有正确设置或配置在Github上。下面是解决办法。 安装git后会自带ssh,终端输入 ssh 生成ssh keys ssh-keygen -t rsa -C "xxxxx@163.com" 邮箱为注册github的邮箱账号。然后连续回车即可。 找到.ssh文件夹,打开id_rsa.pub文件并复制内容。 添加ssh key到github 登录你的github找到SSH and GPG keys选项,然后New SSH key,把刚才复制的内容粘贴到key,名字可以自定义。 测试ssh绑定是否成功 在终端输入ssh -T git@github.com,出现下图即为成功。 这样我们就可以推送我们的blog到github了。
STM32的输入输出模式介绍
一、浮空输入模式(GPIO_Mode_IN_FLOATING) 工作原理:此模式下,GPIO 引脚不连接内部上拉或下拉电阻,处于一种 “悬空” 状态,完全依靠外部电路来确定引脚的电平。它对外部输入信号的响应最为 “纯粹”,没有内部电阻的干扰,但也因此容易受到外界干扰信号的影响。 代码设置示例(基于 STM32 标准库): 12345// 假设要将 GPIOA 的 Pin0 设置为浮空输入模式GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,...
TIM定时中断
TIM定时器(timer)定时器1. 基本介绍 定时器可以对输入的时钟进行计数,并在计算数值达到设定值时触发中断。 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。 不仅具备基本的定时中断功能,而且还包含内外时钟源的选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。 2. 定时器类型 类型 编号 总线 功能 高级定时器 TIM1、TIM8 APB2 拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能 通用定时器 TIM2、TIM3、TIM4、TIM5 APB1 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从出触发模式等功能 基本定时 TIM6、TIM7 APB1 拥有定时中断、主模式触发DAC的功能 STM32F03C8T6定时器资源:TIM1、TIM2、TIM3、TIM4 2025/3/6 未完
MVM和MVC模式
...
理解闭包
1. 概念闭包的核心是词法作用域,即函数在定义时所处的作用域,而不是在执行时所处的作用域。这意味着,函数可以访问定义时所处的作用域中的变量,即使这个函数在其他地方被调用。 2. 经典示例123456789function outerFun(){ let n = 1 function innerFun(){ console.log(n) } return innerFun}const newFun = outerFun()newFun() //输出 1 在这个例子中: outerFun定义了一个局部变量n和一个内部函数innerFun。 innerFun访问了outerFun,即使outerFun已经执行完毕。 outerFun返回了innerFun,并将其复制给newFun。 当newFun被调用时,它仍然可以访问n,这就是闭包的作用。 闭包的应用场景 数据封装和私有变量:闭包可以用来创建私有变量,防止外部直接访问和修改。1234567891011function createCounter()...
STM32中断
NVIC优先级分组 抢占优先级 响应优先级 NVIC的中断优先级由优先级寄存器的4位(0-15) 决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号进行排队。 分组方式 分组方式 抢占优先级 响应优先级 分组0 0位,取值为0 4位,取值0~15 分组1 1位,取值0~1 3位,取值0~7 分组2 2位,取值0~3 位,取值0~3 分组3 3位,取值0~7 1位,取值0~1 分组4 4位,取值0~15 0位,取值为0 EXTI...
hexo常用指令
基础指令1. 初始化博客项目1hexo init <folder> # 在指定文件夹初始化Hexo项目 2. 新建文章12hexo new "文章标题" # 在 source/_posts 下生成新文章hexo new draft "草稿标题" # 在 source/_drafts 下生成草稿 3. 生成静态文件1hexo generate # 或简写为 hexo g 4. 启动本地服务器1234hexo server # 或简写为 hexo s# 常用参数:hexo s -p 4000 # 指定端口hexo s -o # 启动后自动打开浏览器 5. 部署到远程仓库12hexo deploy # 或简写为 hexo d# 需要提前配置 _config.yml 的 deploy 字段(如Git仓库) 6. 清除缓存和生成文件1hexo clean # 删除缓存和 public 文件夹(解决页面未更新问题) 组合指令1. 生成并生成本地预览1hexo g -s # 等同于...
年终总结
...