自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Freertos移植

(2)在移植源码后,打开该文件夹可以看到Portable文件夹,该文件夹存放格式各样的连接桥梁与算法,其中只保留KEIL/RVDS/MemMang即可,其他多余的删去,其中MemMang存放的是内存管理算法,共有5个。(1)首先找到FreeRTOS的源码,并且在工程种创建一个用于存放RTOS源码的文件夹,将FreeRTOS中Source文件夹复制到用于存放RTOS源码的文件夹。这两个文件存放的FreeRTOS源码的.h文件与链接桥梁的.h文件。1、将FreeRTOS的源码添加至基础工程。

2024-09-22 23:23:01 186

原创 STM32 中容量产品 FLASH读写操作

我的思路是,将结构体通过memcpy函数,将其内部赋给一个BUF,让这个BUF再通过FLASH写操作写入到FLASH中,而这个BUF的类型是有说法的,设想,如果使用8位的BUF,那么在这个BUF中,每一位BUF成员都是8位的数据,在memcpy函数复制之后,假设一共有32byte的数据,则这些数据是每1byte传输到FLASH中的,对应了我在写操作中提到的浪费了FLASH的8位空间,写入的结果是 0x00 XX 00 XX,这样子的。写入函数,先解锁,API写入,解锁。一,FLASH的操作问题(软件)

2024-08-26 15:03:39 355

原创 RTC 初学笔记

RTC (时钟芯片)本质上可以由三路时钟源输入 ,内部低速,外部低速,外部高速,但实际上只有外部低速时钟的精度最可靠,并且支持VBAT供电,因此外部低速时钟是RTC的专用时钟。

2024-08-01 16:53:41 276

原创 关于MDK报错FLASH TIMEOUT RESET THE TARGET AND TRY IT AGAIN的问题

在学习stm32的过程中,我们大部分人认为程序编译成了.hex二进制文件,FLASH存储的数据就是这些二进制文件,其实不然,FLASH内部存储的文件实则是.bin文件,bin文件属于.hex文件内部一类,FLASH的大小与.hex文件没有任何关系,.hex文件关乎于.bin文件,而需要看程序能否储存则是要看.bin文件与FLASH大小的关系。stm32的内部存储器分为RAM、ROM(只读存储器,掉电不丢失),其中,FLASH属于ROM。bin大小=RO_DATA+RW_DATA+CODE。

2024-07-19 10:10:09 339

原创 STM32通用定时器

F1系列通用定时器为TIM2/3/4/5,相比于基本定时器,除了拥有其全部功能外,另外增加了极性选择,触发输出ADC,并且会产生触发事件、输入捕获、输出比较,拥有四个独立通道。1.2.2外部1模式:外部模式1来自与IO的复用功能,将IO口复用为一个定时器通道进行输入的时钟源,经过滤波器后进行极性选择,随后进入触发选择,进入从模式选择随后进入时基单元。外部模式2 的时钟源来自io口的复用,外部引脚的电平经过极性选择后进行分频,滤波后由ETRF进入从模式并进如时基单元。1.2通用定时器的4种时钟源。

2024-03-13 12:40:35 230

原创 STM32 独立看门狗&基本定时器

影子寄存器是一种寄存器缓冲机制,因为定时器通常应用在持续计数的系统中,因此不能让寄存器的ARR与PCR改变时突然赋给寄存器,可能会造成数据丢失与程序错误,因此引用了缓冲寄存器与影子寄存器搭配的方法,当某一时序的ARR与PCR改变时,系统会等到该时序产生溢出后,再将缓冲寄存器的改变值赋给影子寄存器。看门狗被激活后,要进行对应的“喂狗”操作,既不让在程序正常进行的过程中被复位,将看门狗的计数器重装载值定时的赋给计数器,达到值不为0。看门狗是一种递减的计数器,当递减的计数器的值为0时,该系统将被复位。

2024-03-12 00:03:10 543 1

原创 STM32中断配置

NVIC属于内核设备,翻译为嵌套向量中断控制器,在stm32全系列中最多有256个中断由NVIC配置,并允许裁剪,因此每个型号的中断数与优先级数各不相同。

2024-03-05 21:05:10 459 1

原创 单片机串口Printf与Fputc

fputc函数是一个对于单个字符输出的语句,在硬件中使用什么设备传递字符,就要将fputc的内容进行修改,成为重定向。用户调用printf函数需要生命STDIO.H库文件,并由fputc函数实现输出。单片机使用printf函数需要注意避免半主机模式,有两种方法如上所示。以上是三种特殊字符的输出。

2024-03-05 18:45:40 479 1

原创 STM32 HAL库 系统滴答与延时函数

系统滴答定时器(SysTick),为内核定时器,是一个24位的递减计数器,其中可以选择1或8(8更多)分频,由AHB总线上的时钟经过分频到达VAL递减计数器,当VAL=0时,计数完成,标志位置1。还用重装载值,当VAL=0后,VAL计数器可以重新装载LOAD的值。

2024-03-04 19:55:34 641 1

原创 STM32 F1系列时钟树学习笔记

在单片机中SYSCLK是一切时序的基准,最大为72MHZ(HSI无法发挥到72,最大为64Mhz),由时钟源进行锁相环倍频而来,随后经过可选分频到达AHB总线,随后经过可选分频到达APB1/2总线。在F1系列中 时钟源分为内部、外部的高速,低速时钟,其中外部时钟内板上晶振外设,内部时钟为片上外设。在stm32休眠时AHB会关闭运行,同时有一个定时器会被等待唤醒,使用的是FCLK时钟,若外部晶振失效,则CSS安全系统会触发,把时钟源切换到内部晶振。第二个函数配置系统时钟的时钟源的选择与通往总线。

2024-03-02 11:33:15 238

原创 Linux基础(1)

linux下硬件都是文件,Linux系统管理的命令是运行的核心,其中命令分为内置shell和linux命令。

2024-02-28 12:09:33 289

原创 Stm32内存映射学习笔记

所以内存等于2的32次方*1byte 约等 4GByte。由于有32根地址线 所以寻址范围为2的32次方。Stm32的存储单元是1字节(8跟数据线)寻址范围= 2的地址线次方。

2024-02-06 09:19:52 537 1

原创 互联网学习笔记

dns域名解析:当进行访问了某个服务器的地址时,会把网站地址传送到DNS服务器,转换成ip地址,返回到电脑,再去找该ip对应的地址。互联网协议:TCP/IP协议(包含多种层次的多种协议组,各种各样的协议,应用层,,网络层链路层)UDP:传输比TCP更快,但稳定性不能得以保证,损失的数据将被丢弃,应用于视频,网游。路由器(网关)会为子设备提供独立的IP地址(此IP地址只在该局域网之中有效)网络端口:一个服务器有多个网络端口来进行各种而样的功能,端口号来决定端口。链路层:实现设备间的物理连接,例如WIFI。

2023-11-19 21:57:56 39

原创 C语言的变量存储类型与特征修饰

volatile,用来修饰cpu的访问效率,当一个内存中的变量无需再次被cpu冲内存中读取时,可以优化(不可优化时,是因为该变量被改变包括但不限于中断,多线程,硬件寄存器),当位于不可优化的情况下,需要告诉编译器变量是易变的,不要优化,每次读取都去内存都,不要走cpu。3,register 只能存储整型的变量,在cpu的r1....寄存器中,且不可以进行取地址,因为r。1,auto如果定义变量时,没有写存储类型,默认都是auto,修饰局部变量,存放在栈中。cpu存值,内存存变量,cpu把存的值放到内存中。

2023-11-10 22:35:09 77 1

原创 单片机 指针传递相较于值传递的不同

本人误区:误认为指针的类型控制的地址就是指针的容量,其实不然,指针的容量由操作系统的位数决定,因为32位的计算机一次可以运算32位的数据,所以指针的容量也需要32位,既4字节,在内存中分配了一个4字节的地址用于存放某个指针变量,2的32次方的内存中存放了4个2的8次方的位数。c语言中,每个函数只能有一个返回值,但是通过使用指针后,可以在主函数中定义一个变量,将变量的地址传递给子函数进行地址调用,在子函数中对主函数中的变量进行修改,使得一个子函数在进行中可以把传递的参数也惊进行返回。进行函数多返回值的操作。

2023-11-06 21:26:50 94

原创 C语言 枚举 结合体

枚举的赋值,枚举中可以定义枚举的取值与常量,其中枚举如果不对常量进行赋值,则常量则是按照顺序对应的赋值为0,1,2,3...枚举不是一个变量类型,只是存储了各种各样的变量,枚举的读取值与储存的变量有关,例如整数为4,字符为1。联合体,联合体中的成员共用一块地址。

2023-10-29 16:04:58 77 1

原创 C语言,数据在内存中的存储

(简单理解,1因为是一个整数,所以源码依然是32位,但如你是一个char变量,当为正数时,在内存中,0000000 00000000 00000000 xxxxxxxx,负数,11111111 111111111 111111111 xxxxxxx只取后8位,当char类型被整形提出来时,有符号的高位补符号位,无符号高位补0)其中数据在内存中,是以补码的形式存在,正数原码反码补码都相同,负数的源码为一个符号位(1为负,0为正)与数据位保存,补码等于反码(源码保留符号位,数据位全部取反)+1bit。

2023-10-29 14:53:53 57 1

原创 C语言 结构体学习笔记

结构体内可以定义各种元素,包括:常规变量(字符,整形,浮点),数组,指针,以及结构体,其中结构体有多种的定义方式,以下是结构体的三种常规定义方式。

2023-10-25 19:50:30 115 1

原创 C语言指针学习笔记

通常在c语言中定义一个数组用指针来访问,这个数组名字表示数组内第一个元素的首地址。

2023-10-23 09:53:32 87

原创 C语言 关于野指针的三种可能出现的方式

1,当一个指针变量定义时没有给其赋值2,当一个指针越过了数组的单位容量illustrate:上面的main为情况1 下面的为情况23,当调用某一临时变量的地址进行指针此处的a为一个局部变量,在主函数中a不属于编译器,已经被返回给编译器,尽管*p得到了变量a存在时的地址,但是*p=20已经不发运行,地址已经被编译器释放,编译器没有权限使用。

2023-10-22 16:15:32 112 1

原创 STM32F103 串口uart学习笔记(一)

单端电平:对应本设备的GND端口的电平来进行电平高低确认,区别与差分法(根据双端的两个电压差)。时钟:在发送端的电平之下,无法确定具体的采样时间,因此就需要一个时钟来进行数据采样,例如一个标准的,高低电平时间相等的下降沿产生一秒的波形,根据不同的采样频率4bite/s与2bit/s可将采集到的电平区分为(1,1,0,0)与(1,0)。同步时钟:由于硬件带有SCK\SCLK引脚可以两个设备之间约定相同的操作来进行相互传输。

2023-10-16 21:09:48 329 1

原创 2021-11-12

创建一个变量int age = 20;int数据类型age变量名称变量的分类 局部变量 全局变量大括号内定义的变量叫局部变量大括号外定义的变量叫全局变量当局部变量和全局冲突时 局部变量优先scanf是输入函数 两个输入数据之间要空格使用sacnf报错时 可以将源文件第一行加上#define _CRT_SECURE_NO_WARNINGS 1或者用sacnf_s(只有vs能用)在vs安装路径中找newc++file.cpp打开将上面那句话填入 vs之后打开默认将这句话填入第一行.

2021-11-12 22:07:07 190

原创 2021-11-10

计算机语言需要描述出数据的类型char 字符数据类型 字符short 短整形int 整形 整数long 长整形long long 更长的整形float 单精度浮点类型 小数double 双精度浮点型使用c语言存储数据例如“a”int main(){char b=‘a’;return 0;}%d 打印符号sizeof()计算数据大小的函数 单位为字节例 printf

2021-11-10 18:52:03 375

原创 2021-11-10

C语言初建1创建一个项目2创建一个源文件3写代码4编译并运行1–参加一个项目打开visual stuido→新建项目-→visual C++→空项目2–创建一个源文件视图→解决方案资源管理器→添加→新建项→visual C++→C++文件3–写代码函数后面带小括号需要写出主函数(main函数)是运行的入口int是整形 即返回类型用库函数需要声明引用的头文件#include <xxx.h>4编译和运行的快捷键为crtl+f5vs2019点击新建项目→空项目→创建.c

2021-11-10 08:14:49 47

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除