- 博客(139)
- 资源 (3)
- 收藏
- 关注
转载 C语言中const关键字的用法
文章目录前言一、修饰局部变量二、常量指针与指针常量三、修饰函数的参数四、修饰函数的返回值五、修饰全局变量前言关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点:1、预编译指令只是对值进行简单的替换,不能进行类型检查2、可以保护被修饰的东西,防止意外修改,增强程序的健
2021-12-09 07:25:27 362
转载 C语言中volatile关键字的作用
文章目录一.前言二.volatile详解:一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重
2021-12-09 07:00:01 7116
原创 Cortex-m4 处理器框图
文章目录1、操作和执行模式1.1、操作模式1.2、操作状态1、操作和执行模式Cortex-M4 处理器支持 Thread 和 Handler 操作模式,可以在 Thumb 或 Debug 操作状态下运行。 此外,处理器可以通过以特权或非特权模式执行代码来限制或排除对某些资源的访问。有关这些操作和执行模式的更多信息,请参阅 Arm®v7-M 架构参考手册1.1、操作模式导致处理器进入Thread或Handler模式的条件如下:• 处理器在复位时或作为异常返回的结果进入线程模式。 特权和非特权代码可
2021-08-29 22:08:32 2828
转载 FreeRTOS 消息队列
本文转载自: https://www.cnblogs.com/yangguang-it/p/7198622.html本章节为大家讲解 FreeRTOS 的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息队列在实际项目中应用较多。 消息队列的概念及其作用消息队列就是通过 RTOS 内核提供的服务,任务或中断服务子程序可以将一个消息(注意,FreeRTOS消息队列传递的是实际数据,并不是数据地址,RTX,uCOS-II 和 uCOS-III 是传递的地址)放入到队列。同样,一个或者多个任务可
2020-07-27 06:48:10 856
转载 ROM、RAM、DRAM、SRAM和FLASH的区别
ROM和RAM指的都是半导体存储器,ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上.
2020-07-25 11:31:11 551
原创 STM32F767与树莓派3B之间的通信
文章目录1、查看树莓派本机IP2、使用SSH远程登录3、连接STM32F767和树莓派4、配置树莓派1、查看树莓派本机IP2、使用SSH远程登录我使用的是 FinalShell ;也可以不使用远程登录,给树莓派插个显示屏和键盘鼠标也行。注意双方需要处于同一局域网下。3、连接STM32F767和树莓派直接使用stm32的串口下载线,一端连接stm32的USB_232接口,一端连接树...
2020-06-21 10:46:08 591
原创 STM32F767将数据写入SD卡
一、FATFS系统1、文件系统是什么?负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。2、FATFS文件系统简介3、FATFS模块层次结构4、FATFS移植步骤5、FATFS常用函数FATFS的源码,大家可以在这个网站上下载到:http://elm-chan.org/fsw/ff/00index_e.html里面有常用函数的讲解...
2020-06-21 10:45:46 5245 6
原创 STM32F103实现双ADC同步采集电压信号
STM32一般都拥有1~3个ADC,这些ADC可以独立使用,也可以使用双重/三重ADC采样模式,本文使用STM32F103ZET6的双重ADC模式,同步采集两个通道的电压信号。一、注意事项1、配置ADC的采样模式为同步规则采样ADC1和ADC2采样模式相同,但其中ADC1为主ADC,ADC2为从ADC。该模式在ADC_CR1寄存器中配置:(具体资料请参详STM32参考手册)2、使能DM...
2020-06-21 10:45:00 29613 14
原创 C++ 中易犯错误
文章目录一、类中不写成员函数一、类中不写成员函数例如:#include <iostream>#include <stdio.h>using namespace std;class MyCicle{public: double r; double pi = 3.1415926; double area = pi * r * r;};int main(){ MyCicle c1; cout << "ple
2020-06-01 09:10:39 312
原创 用面向过程和面向对象的方法求解圆形面积
文章目录一、面向过程二、面向对象面向过程,加工的是一个一个的函数面向对象,加工的是一个一个的类一、面向过程#include <iostream>#include <stdio.h>using namespace std;int main(){ double r = 0; double s = 0; cout << "请输入圆形的半径:"; cin >> r; cout << "r的值是:
2020-06-01 06:53:46 1338
转载 图的基本概念
图的简介 图(Graph)结构是一种非线性的数据结构,图在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。图结构比树结构复杂的非线性结构。图结构构成 1.顶点(vertex):图中的数据元素,如图一。2.边(edge):图中连接这些顶点的线,如图一。 ...
2020-02-18 17:43:09 865
转载 树的基本概念
----------树的定义 树是 N (N >= 0 )个结点的有限集合,N = 0 时,称为空树,这是一种特殊情况。在任意一棵非空树中 应满足: &nb...
2020-02-14 11:55:40 265
原创 队列
队列也是一种重要的线性结构。与栈相同,实现一个队列同样需要顺 序表或者链表作为基础。与栈不同的是,队列是一种先进先出的的线性表。它要求所有的数据从队列的一端进入,从队列的另一端离开。在队列中,允许插入数据的一端叫队尾,允许数据离开的一端叫队头。一、队列程序实例实现一个链队列,任意输入一串字符,以@为结束标志,然后将队列中的元素逐一取出,打印在屏幕上。#include <stdio....
2020-02-10 17:05:22 159
原创 栈
栈是一种重要的线性结构。栈必须通过顺序表或者链表来实现。栈是一个 先进后出 的线性表,它要求只在表尾进行数据的删除和插入等操作。线性表有两种存储方式,即顺序表存储和链表存储。一般的栈都是用顺序表存储形式实现的,因此也叫顺序栈。一、栈实例利用栈的数据结构,将二进制数转换为十进制数。#include <stdio.h>#include <math.h>#defi...
2020-02-09 10:05:14 151
原创 顺序表
创建一个静态的顺序表存放整数,大小为10,完成以下操作:1、输入6的整数,打印出顺序表中的内容,并显示表中剩余的空间个数。2、在顺序表中第3个位置插入元素0,打印出顺序表中内容,并显示表中剩余空间个数。3、再试图向表中第11个位置插入整数0,程序提示超出范围。4、删除表中第6个元素,打印出顺序表中内容,并显示剩余的空间个数。代码如下:#include <stdio.h>#...
2020-01-04 17:37:34 643
原创 ROS中的ROS_MASTER_URI解析
ROS_MASTER_URI=http://192.168.31.200:11311 中的ROS_MASTER_URI是什么呢?URI(Uniform Resource Identifier,统一资源标识符)就是在IMS网络中IMS用户的“名字”,也就是IMS用户的身份标识。如果需要远程链接,需要在远程服务器将ROS_MASTER_URI变为启动roscore的地址,即master地址:...
2019-11-16 20:42:52 3616
原创 STM32F767时钟树分析
文章目录1、STM32F7 的时钟系统图2、STM32F7 时钟源3、STM32F7 系统时钟4、STM32F7 常用时钟众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比...
2019-11-10 19:31:39 3525 1
原创 常用的七种排序算法【C语言】
常用的七种排序算法分别是直接插入法、折半插入法、冒泡排序、快速排序、简单排序、堆排序、并归排序。#include <stdio.h>#include <string.h>#define MAXSIZE 20 // 顺序表最大长度typedef int KeyType; // 定义关键字为整数类型ty...
2019-11-09 08:14:58 342
原创 C语言练习笔记 ~ typedef
typedef 是一种高级数据特性,它能使某一类型创建自己的名字。它主要的目的也是简化我们的代码和语法,可以大大提高代码的可维护性。特点:1、typedef 与 #define 不同,typedef 仅限于数据类型,而不是能是表达式或具体的值。2、typedef 是编译器处理的,而不是预编译指令。3、typedef 比 #define 更灵活。示例#include <stdio...
2019-11-05 20:35:21 217
原创 C语言练习笔记 ~ 枚举类型
文章目录例1例2 改变默认值define 一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举。例1#include <stdio.h>#include <string.h>#include <stdlib.h>#pragma warning(disable:4996)struct man{ char name[20]; ...
2019-11-05 19:59:17 423
原创 C语言练习笔记 ~结构体10 ~ 结构体变量作为函数的参数
例1#include <stdio.h>#include <string.h>#include <stdlib.h>#pragma warning(disable:4996)struct student { char name[20]; int age;};void set_student(struct student *...
2019-11-04 21:27:59 183
原创 C语言练习笔记 ~结构体9 ~ 堆中创建结构体变量
例1#include <stdio.h>#include <string.h>#include <stdlib.h>#pragma warning(disable:4996)struct student { char name[20]; //没有在内存里,只是在代码中,必须要定义变量之后才进内存 int age;};stru...
2019-11-04 20:57:41 1348 3
原创 C语言练习笔记 ~结构体8 ~ 结构体变量的指针成员(浅拷贝与深拷贝)
文章目录例1 结构体变量为指针例2 结构体变量赋值(浅拷贝)例3 结构体变量赋值(深拷贝)例1 结构体变量为指针#include <stdio.h>#include <string.h>#include <stdlib.h>#pragma warning(disable:4996)struct student { char name...
2019-11-04 20:27:56 495 2
原创 C语言练习笔记 ~结构体7 ~ 指向结构体的指针
通过指针访问结构体成员-> 操作符(*p).a 等同于 p-> a#include <stdio.h>#include <string.h>#pragma warning(disable:4996)struct student { char name[20]; int age;}; int main () { ...
2019-10-31 13:02:06 213
原创 C语言练习笔记 ~结构体6 ~ 结构体变量赋值
结构体变量赋值#include <stdio.h>#include <string.h>struct student { char name[20]; int age;}; int main () { struct student st1 = {"abc", 30}; struct student st2; st...
2019-10-31 12:47:31 279
转载 欧拉公式
世界上最伟大的十个公式:欧拉公式、麦克斯韦方程组、牛顿第二定律、勾股定理、薛定谔方程、质能方程、德布罗意方程组、1+1=2、傅立叶变换、圆的周长公式。欧拉公式的巧妙之处在于,它没有任何多余的内容,将数学中最基本的e、i、π放在了同一个式子中,同时加入了数学也是哲学中最重要的0和1,再以简单的加号相连。高斯...
2019-10-29 08:06:22 13654 1
转载 用c语言实现的FFT
一、对FFT的介绍1. FFT(Fast Fourier Transformation),即为快速傅里叶变换,是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。2.FFT算法的基本原理 FFT算法是把长序列的DFT逐次分解为较短序列的DFT。 按照...
2019-10-29 08:01:38 3296 2
原创 C语言练习笔记 ~结构体5 ~ 结构体嵌套
例1#include <stdio.h>#include <string.h>#pragma warning(disable:4996)struct A{ char a1; };struct B{ struct A a; int a1; }; int main () { struct B b; p...
2019-10-25 22:34:21 214
原创 C语言练习笔记 ~结构体2 ~ 结构体在内存中的对齐说明
文章目录1、结构体变量在内存中的对齐说明例1 ~ 1个char型变量例2 ~ 2个char型变量例3 ~ 1个int型变量例4 ~ 1个char型变量和1个int型变量例5 ~ 3个char型变量和1个int型变量例6 ~ 5个char型变量和1个int型变量例7 ~ 1个char型变量、1个short型变量和1个int型变量例8 ~ 2个char型变量、1个short型变量和1个int型变量2、...
2019-10-23 21:47:49 218
原创 线性结构 ~ 线性表
文章目录1、如何表示一元多项式?1.1、顺序存储结构直接表示1.2、顺序存储结构表示非零项1.3、链表结构存储非零项2、什么是线性表?2.1、线性表的定义2.2、线性表的抽象数据类型描述2.3、线性表的顺序存储实现2.3.1、主要操作实现(1)初始化(建立空的顺序表)(2)查表(3)插入(4)删除2.4、线性表的链式存储实现1、如何表示一元多项式?1.1、顺序存储结构直接表示但这种方法,...
2019-10-23 19:06:33 441
原创 傅里叶变换 ~ 基 2 时间抽取 FFT 算法
文章目录1、基2时间抽取FFT算法原理2、基2时间抽取FFT算法流图2.1、示例1 ~ 4点的序列表示成两个2点的DFT2.2、示例2 ~ 8点的序列表示成两个2点的DFT2.3、实例演示3、基2时间抽取FFT算法流图特点3.1、蝶形图的关系3.2、旋转因子的规律3.3、序列关系3.4、原位运算4、基2时间抽取FFT算法的复杂度1、基2时间抽取FFT算法原理将一个长序列的DFT,表达为2个短序...
2019-10-22 11:18:54 37851 2
原创 傅里叶变换 ~ FFT概述
文章目录1、为什么研究FFT算法2、解决问题的基本思想FFT (Fast Forier Transform)1、为什么研究FFT算法连续非周期信号x(t)x(t)x(t)的频谱是 X(jω)X(j\omega )X(jω),离散非周期信号的频谱是X(ejΩ)X({e^{j\Omega }})X(ejΩ)。这两个信号从理论上是可以实现时域到频域的转化,但是在工程应用中,由于x(t)x(t)x...
2019-10-21 22:16:35 3125
原创 傅里叶变换 ~ 离散傅里叶变换(DFT)
离散傅里叶变换(DFT)–有限长序列的离散频域表示离散傅里叶变换(DFT)是数字信号处理中非常有用的一种变换,因为它是频域也离散化的一种傅里叶变换。也就是说,时域和频域都离散化了,这样使计算机对信号的时域、频域都能进行计算;另外DFT作为有限长序列的一种傅里叶表示法在理论上相当重要;最后由于DFT有多种快速算法。使得信号处理速度有非常大的提高。离散傅里叶变换(DFT)是离散傅里叶级数(DFS)...
2019-10-21 20:07:03 48522 1
原创 傅里叶变换 ~ 利用 DFT 计算线性卷积
文章目录利用 DFT 计算线性卷积1、线性卷积原理2、DFT 计算线性卷积原理3、乘法运算次数比较4、示例利用 DFT 计算线性卷积1、线性卷积原理线性卷积如下:一个离散序列通过一个离散的线性时不变系统,它的输出就是上面这样一个表达式。也就是说在时域,输出信号等于输入信号和系统的单位脉冲响应 h[K] 的卷积。2、DFT 计算线性卷积原理利用 DFT 的循环卷积特性,可由 DFT 计...
2019-10-21 20:04:59 14211
Cortex-M4 和 ARMv7-m架构.rar
2020-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人