自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (7)
  • 收藏
  • 关注

原创 C程序设计——再说说函数参数的值传递

上一篇的最后,我强调了。

2024-09-10 22:17:37 372

原创 C程序设计——函数0

前面说过C语言是结构化的程序设计语言,他把所有问题抽象为数据和对数据的操作,前面讲的变量、常量,都是数据。现在开始讲对数据操作——函数。比如我们要定义一个函数,返回值是一个32位的整形;函数名为 sum;参数是两个32位整形数据,名称分别是 iA 和 iB。;这里的 1 和 2 ,叫做函数sum的实际参数,简称;这里是 main函数调用了 sum函数,从关系上讲,main叫做主调函数,sum叫做背调函数。

2024-09-05 21:43:02 512 1

原创 C程序设计——指针杂谈0

下面这个代码,定义了一个无符号 char型的指针,表示指针的 “*”,是用来修饰 “SCON”的,而不是修饰类型 “unsigned char”。因此下面这个代码中,SCON 是 unsigned char 类型的指针,它的长度应该是8;cC是 unsigned char 类型的变量,它的长度应该是 1。int iSize;

2024-09-03 22:19:50 448

原创 我教闺女学编程——若P则Q

这种命题,只有在 P为真,Q为假时,是假命题,其余情况,都是真命题。上面这两种,在数学上,叫做若P则Q的命题。如果怎么样,那么怎么样;因为什么,所以什么;

2024-08-28 23:04:56 122

原创 C程序设计——类型转换

当两个不同类型的数据,进行算数运算时,就需要将两个数据转换成同一类型,再运算,这就叫类型转换。

2024-08-28 22:56:42 703

原创 C程序设计——表达式的值1

条件表达式的形式是:(表达式1)?(表达式2) : (表达式3);当的值为真(即非 0)时,为的值;当的值为假(即 0)时,为的值;

2024-08-27 21:27:45 308

原创 我教闺女学编程——非运算

我引导孩子:“全是女生,否命题是:全不是女生。特别的我问孩子:从你们班找5个同学,全是女生。比如,“现在正在下雨”的非命题就是“现在不下雨”。如果命题为真,那么非运算后就为假。如果命题为假,那么非运算后就为真。孩子说,等一反应是:“全不是女生”孩子立马反应过来:“不全是女生。这反应速度,比我高中时快多了。命题和非命题,必有一个为真。

2024-08-26 22:24:25 381

原创 C程序设计——表达式的值0

表达式是一组序列,由操作符或操作数组成。

2024-08-26 22:10:08 540

原创 C程序设计——运算符1

上述代码,注意其中注释的提示,由于 iC = iA + iB 的位置不一样,所以最后打印 iC的值不一样。括号运算符,就是数学上的小括号,含义跟数学上的括号类似,就是括号括起来的表达式,要优先计算,括号里算完了,再算括号外面的。上述代码中,用于计算 iC的表达式中,就有两层嵌套的括号,该怎么算,相信只要小学毕业了,都能算出来,就不赘述了。(表达式2) : (表达式3);前面讲指针的时候,讲过这俩,这里就不赘述了。有括号(),下标[],成员(→,.)等几种。用于把若干表达式组合成一个表达式(,)。

2024-08-24 22:16:49 927

原创 C程序设计——运算符0

前面我们讲解了C语言的基本变量类型,接下来,接下来,我们讲解运算符。本文介绍的运算符,有些前面用过,只是没有系统讲解,本节将把C语言的运算符,做一个系统讲解。

2024-08-22 22:09:27 357

原创 C程序设计——常量后缀

本节内容,如果感觉学的比较吃力,可以最后再翻回来看。上一节,我们讲了两种常量,在这里我个人给他们起名字,分别叫做数值常量下面的和M_PI这些,名称常量。

2024-08-22 21:50:20 533

原创 我教闺女学编程——或运算

这个就是或关系,只要你和妹妹有一个人去了公园,‘你或妹妹去了公园’就是真命题。也可能只有妹妹去了;“如果爸爸说,你或妹妹去了公园,有几种可能?有了前面与运算的底子,今天可以教或运算了。

2024-08-20 22:32:57 109

原创 C程序设计——常量

/ 1小时 == 3600秒上述源码就表示定义了一个整数类型的常量 I_XIAO_SHI。I_XIAO_SHI 叫做常量名。上述源码中,定义I_XIAO_SHI的时候,直接给它赋值了。这种在定义时赋值的操作,叫做初始化。用const 定义的常量只能初始化,不能赋值。如果你拥有一个好的编程风格,常量名全部用大写字母。char,unsigned char,short int……等所有整数、无符号整数类型,都可以通过const 关键字定义常量。

2024-08-20 22:23:20 408

原创 我教闺女学编程——与运算

只有“你去了公园”和“妹妹去了公园”都是真命题时,“你去了公园”与上“妹妹去了公园”才是真命,你和妹妹都没去,或者有一个没去,“你去了公园”与上“妹妹去了公园”就是假命题。我说:“真棒,你看‘与’在这句话里,就是你和妹妹都去了的意思对吧?我先做铺垫,问孩子:“如果爸爸说:‘你与妹妹去了公园。“你去了公园”与上“妹妹去了公园”。我就引导孩子,不用说那么多,就只看这句话,都有谁去了?孩子马上回答:“爸爸、妈妈、姥姥、我和妹妹”上次给孩子讲了命题,今天讲了与运算。孩子说:“我和妹妹”孩子说,我俩都去了。

2024-08-18 22:49:10 270

原创 我教闺女学编程——命题

然后,我指晴朗的天空说:“现在正在下雨。”孩子说:“肯定是假的呀!”我就告诉她:“现在正在下雨。就是一个命题,而且是个假命题。知道孩子语文已经学过陈述句了,学习命题的基本条件具备了。孩子可以理解,“可以判断真假的句子,叫做命题”然后我告诉孩子,命题一定是个陈述句。

2024-08-16 23:40:30 104

原创 C程序设计——基本变量类型(指针杂谈0)

一定。

2024-08-16 23:26:13 1202

原创 C程序设计——基本变量类型(指针1)

我们先介绍一下程序设计语言中,很重要的一个部分——注释。注释通常用来说明源码的功能、作者、版权等。目前常见的C编译器,都支持两种注释,多行注释和单行注释。

2024-08-15 22:23:47 248

原创 C程序设计——基本变量类型(指针0)

再变量名的左边加一个星号“*”,就是定义了一个指针变量int表示这个指针变量指向一个整形数据,有了这个变量,我们理论上就可以访问计算机的所有的存储地址了,当然由于系统的权限问题,有些地址其实访问不了。我们已经知道,C语言的指针,其实就是存储的地址,那么我们定义了一个指针,怎么让它指向预期的地址呢?指针变量赋值比如我定义一个整形变量C语言中规定,变量定义完成后,在变量名的左边加一个“&”符号,就表示获取这个变量的地址。因此,上述代码的含义就是,先定义一个整形变量iZhengXing。

2024-08-13 22:29:40 351

原创 C程序设计——基本变量类型(浮点数)

前面讲了C语言如何定义整数变量和自然数变量,他们有一个特点,小数点固定在最右边。C语言中还有一类数据,叫做,它在计算机中,用类似科学计数法的方式存储。浮点数格式的工业标准是 IEEE 754,有两种单精度浮点(用32位二进制表示)、双精度浮点(用64位二进制表示),这两种浮点数将来你们学习《组成原理》课程时,会专门讲解。

2024-08-12 22:04:39 188

原创 C程序设计——基本变量类型(自然数)

C语言通过 “unsigned + 变量类型” 来定义一个自然数,直译作无符号数。

2024-08-12 21:27:26 339

原创 C程序设计——基本变量类型(整数)

前面我们讲过,C语言是结构化的程序设计语言,把问题归结为两部分:数据和对数据的操作。今天要讲的变量,就是C语言中数据的重要部分。C语言是一个强类型的语言,它要求所有的变量,都必须先定义,后使用。C语言的变量定义最基本的形式是:类型 变量名 ;注意:变量名后面的封号不能省略。因为没有查阅C语言规范,所以我个人理解,变量名几乎没有长度限制,首字符只能是字母或者下划线;其他字符可以是字母、下划线或者数字。在大多数的编译器里,char 类型的变量,存放一个8位二进制整数,转化为十进制时,采用补码的规则映射,范围是

2024-08-11 22:09:49 554

原创 C程序设计——编程语言极简史

机器语言,就是计算机能直接运行的语言,当然计算机本身就是人设计的,机器语言人类也能理解,只不过要理解机器语言,需要一定的知识门槛。等你学了《离散数学》《模拟电路》、《数字电路》、《组成原理》以后,再看一个内核的文档(推荐看 LoongArc,因为全中文,没有语言障碍),就能理解机器语言了。。按照,操作码其实也是地址,只不过是控制器和运算器的片选地址;操作数,可以是操作数本身,也可以是操作数的片选地址。按照目前的计算机语言分类,机器语言是一种低级语言,也被分为面向过程的语言。

2024-08-09 23:46:41 554

原创 C程序设计——第一个C程序“祖国您好”

的传说,按照一般的翻译,这句都会翻译成 “你好世界!后来成年了,我才发现在美国人心目中,美国就是世界,当他说 “ hello world!”的时候,可能心中并没有把美国以外的世界,作为世界的一部分。”,考虑到汉语通常把主语放在前面,最好的翻译应该是:“祖国您好!表示定义了一个函数,函数名叫 main ,这个函数的返回值是 int 类型、参数是void 类型(空类型,即没有参数),两个大括号:{ } 中间是 main 函数的函数体。printf 函数的功能是:按照预定的格式输出字符串,就是引号里面的。

2024-08-07 22:22:31 151

原创 C程序设计——计算机中如何表示负数

计算机中负数的表示方式,经常被提起的有三种:原码、反码、补码。

2024-08-05 22:07:58 529

原创 C程序设计——定长二进制表示一个数

这部分内容,将来学到《离散数学》的数论部分,会有详细介绍。本书中所说的“自然数”均包括 “0”我们先来复习一下小学的数学知识,请看下面这个式子:在上面的式子里,我们可以看到 7 和 10除以3以后,余数都是“1”,在数论里把上面除以3以后余数相同的数,称作“模3同余”,比如我们说:7、10 摸3同余,记作 :模运算加法、减法、乘法如下:加法:如果a≡b(mod m),那么a+c≡b+c(mod m)。减法:如果a≡b(mod m),那么a-c≡b-c(mod m)。乘法:如果a≡b(mod m),那么ac≡

2024-08-04 23:22:02 334

原创 C程序设计——二进制定点数加法的硬件实现

前面我们讲过二进制的加法:我们可以把上述式子改造成如下样子,等号左边有三项,分别是:进位位:;加数;另一个加数。等号右边是两项:进位位,和加法结果==()|()|()|(当输入项中,任何两个为 1 时,为 1,写成算式就是== () | () | (等将来你学到时,就会学到:== (& ()) | (() &于是就可以用异或来表示:==

2024-07-30 22:02:16 337

原创 C程序设计——二进制逻辑运算的硬件实现

上面所介绍的电路,仅仅是可以实现相关运算的驱动电路,而且并不唯一。工程上为了适应具体的需求(比如驱动能力、反应速度等),会以上面的驱动电路为基础,增加外围以实现需求。但具体原理《模拟电子技术》相关课程会详细介绍,这里不做赘述。上图作为一个整体,被叫做“非门”,可以实现!

2024-07-29 21:44:54 310

原创 C程序设计——二进制的运算

二进制的运算,可以分为两大类,算术运算和逻辑运算。

2024-07-28 21:48:50 241

原创 C程序设计——十六进制自然数和数制转换

扩展前面十进制和二进制的性质,十六进制应该有十六个字符,分别表示0 ~ 15,其中 0 ~9 沿用十进制的字符,10 ~ 15 用英文字符 A ~ F 来表示如果我们用。

2024-07-26 22:34:43 255

原创 ARMV7-M 的栈空间

通常,寄存器R4~R8(V1~V5),R10(V7)和R11(V8)被用来保持常规的局部变量。通常,寄存器R4~R8(V1~V5),R10(V7)和R11(V8)被用来存储局部变量。栈的生长方式为:向下生长(即:栈底高地址,栈顶低地址),栈顶地址存放在SP(R13)寄存器中。栈的实现方式为,向下生长,当前栈顶指针存放在SP(R13)寄存器中,通常栈空间由栈底和栈长度决定,但是应用程序不保证SP指针在它俩之间。子程序返回后,必须保证下列寄存器的值,与刚进入该函数时相同:R4~R8,R10,R11和SP。

2024-07-15 22:31:08 231

原创 C程序设计——自然数的二进制表示

十进制整数,我们从胎教就开始学,它所有的数字由十个字符:0,1,2,3,4,5,6,7,8,9 再加上 “+”,“-”构成;它的加法法则是逢十进一。这里要强调一下,十进制中只需要0~9 就能表示所有的数,“十”只需要用1和0两个字符来表示,比如十进制数 +654 和 -654,分别可以用如下方式拆开。

2024-07-12 22:18:47 193

原创 ARMV7-M 的例外和启动流程

我个人见过的硬件设计,系统上电 全都伴随着复位,因此 ARMV7-M 上电启动后,会触发复位例外,内核也许会装模作样的现场保护(也可能做了特殊处理,装都不装一下),然后到中断向量里取得 Reset 例外的入口地址,放入程序计数器(PC),然后取指,程序就运行起来了。ARMV7-M 的例外处理流程是:如果例外无法屏蔽(非屏蔽中断)或者没有屏蔽(可屏蔽中断),例外触发后,首先进行现场保护,然后根据例外编号到中断向量里找到相应中断入口地址,放入PC寄存器。修改 VTOR的值,就可以改变中断向量的值。

2024-07-11 22:18:45 204

原创 C程序设计——第一章:数据

为了研究方便,计算机科学把计算机分为若干层,当然分层的方法有很多种,每个人、每个教材都会从不同的角度,划出不同的层次。存储和运算器被抽象为一个整体:“对象”。其余部分,对程序员透明存储抽象为数据。运算器抽象为对数据操作。其他部分(如:通用寄存器、协处理器等)对程序员透明。C语言运算器地址抽象为操作码。剩余部分(如:存储、通用寄存器、协处理器等)抽象为地址和操作数本身就是二进制数据:运算器抽象为地址。剩余部分(如:存储、通用寄存器、协处理器等)抽象为地址和操作数。

2024-07-10 21:41:48 382

原创 ARMV7-M 的两个栈顶寄存器

在“线程模式”下,R13对应的物理寄存器,由 CONTROL.SPSEL 决定,当 CONTROL.SPSEL == 0 时,使用MSP;栈顶指针(SP),分为主要栈寄存器和进程栈寄存器。当前的栈依赖运行模式,在线程模式下由CONTROL.SPSEL 来决定,复位完成后默认使用 PSP。由于ARMV7-M复位后运行在“线程模式”下,且 CONTROL.SPSEL == 0,因此,ARMV7-M复位后R13对应的物理寄存器是 MSP。),因而此时,R13对应的物理寄存器是MSP。

2024-06-30 22:53:47 231

原创 ARMV7-M 的工作模式和特权等级

以上是说:线程模式(Thread mode)是ARMV7-M 的复位后的运行模式。线程模式又分为“用户等级”(直译“无特权级”,unprivileged)和“有特权级”(privileged)。线程模式下可以使用SVC指令,来触发 SVCall 例外,该例外能将运行模式改为“管理者模式”(Hander mode);由上表可以知道,只有当线程模式下且CONTROL.nPRIV == 0时,ARM内核处于“无特权级”。CONTROL.nPRIV 用来配置,线程模式下内核的特权等级。

2024-06-25 22:39:01 383

原创 ARMV7-M 核心寄存器的约定用法

R0~R1:函数返回时,存放函数返回值。当返回值的长度小于32位时,放在R0中,当返回值的长度超过32位不超过64位时,第32位放在R0,高32位放在R1。R9(SB、TR)、R11(FP)、R12(IP),看起来好像也有约定的用法,但是没太看懂要怎么用,如果有这方面的专家,欢迎留言指教。当C去调用一个汇编函数时,也一样,C会把参数放到R0~R3,函数返回后读取R0和R1来获取返回值。R13(SP):栈顶寄存器,指向栈顶元素的地址(此处要注意:是栈顶元素,不是栈顶元素的下一个)剩下的寄存器,没有约定用法。

2024-06-24 21:52:03 258

原创 ARMV7 CortexM 协处理器

ARMV7一共定义了编号0到15,共16个协处理器,分别命名为CP0到CP15。CP8到CP15为ARM保留使用;CP0到CP7为各厂家自定义。协处理器CP10和CP11用于 ARMV7-M的浮点扩展。一个支持浮点的ARMV7-M核心,应能访问CP10和CP11。所以,由于ARMV7-M 没有CP14,因此ARMV7-M 不会有CACHE,也不会有性能监控、MMC等等。的 ARMV7-M 有协处理器 CP10 和CP11。浮点 ARMV7-M 没有协处理器。

2024-06-23 22:13:50 119

原创 ARMV7的通用寄存器(核心寄存器、Core Register)

单就通用寄存器而言,可以分为两类:CortexA和CortexR是一类;CortexM是另一类。ARMV7 分为三类:CortexA、CortexR和CortexM。图1 CortexA和CortexR 的通用寄存器。图2 CortexM的通用寄存器。

2024-06-20 22:22:06 272

原创 我教闺女学编程——冒泡法排序

学习编程,排序肯定是逃不过的,排序中冒泡法排序最好理解,为了让孩子理解冒泡法排序,我用扑克牌给孩子设计了一个排序的小游戏,让孩子感性的理解冒泡法排序。我教闺女学编程——冒泡法排序。

2024-06-20 21:47:18 161

原创 我教闺女学编程——之图形变量到字母变量

很明显,这里用一个空心的三角形来代替未知数,把一个求方程的运算,巧妙的转化成了“填空”,而且孩子的汉语拼音已经很熟练了,让孩子理解用字母表示未知数,就只剩一层窗户纸了。我趁热打铁:“刚才那个题目 △ + 5 = 6里的三角形,我如果换成字母‘s’,用字母s来代替三角形,可不可以呀?突然这么一转折,孩子的第一个反应是,“s”不是空心的,所以不能换。在二年级上学期,一个不经意的早晨,送孩子上学的路上,我问孩子:“△ + 5 = 6,△等于多少呀?我又问,“sān 的第一个字母是什么呀?孩子回答:“sān”

2024-06-09 22:16:23 164

龙芯架构32位参考手册

龙芯架构32位参考手册

2024-07-28

龙芯架构(loongarc)64位参考手册

龙芯架构(loongarc)64位参考手册

2024-07-27

ARM Cortex-M4 用户手册

ARM Cortex-M4 官方手册

2024-07-26

ARM架构程序调用规则 AAPCS

Procedure Call Standard for the Arm Architecture ARM架构程序调用规则

2024-07-12

VS2010 MSCOMM.zip

使用方法如下: 1.解压缩压缩包内包含四个文件: MSCOMM.SRG MSCOMM32.DEP MSCOMM32.oca mscomm32.ocx 2.复制文件到指定路径: 32位的系统,文件复制到C:\WINDOWS\SYSTEM32目录下; 64位的系统,文件复制到C:\Windows\SysWOW64目录下。 3.win+r输入cmd打开cmd窗口,在cmd中输入: 32位:regsvr32 C:\Windows\System32\mscomm32.ocx 64位:regsvr32 C:\Windows\SysWOW64\mscomm32.ocx 按enter之后会提示注册成功。

2021-01-05

Keil.STM32F4xx_DFP.2.14.0.part2.rar

Keil.STM32F4xx_DFP.2.14.0.part2.rar keil ARM开发配套工具.

2019-10-23

Keil.STM32F4xx_DFP.2.14.0.part1.rar

由于SCDN 上传限制, 该资源为其中一部分, 另一部分链接: https://download.csdn.net/download/tianshigexing/11904352 需都下载下来, 才能正常解压. Keil.STM32F4xx_DFP.2.14.0.part1, keil5 STM32 开发配套工具. 否则STM32F4D代码无法正常使用.

2019-10-23

vbscript做的计算分压电阻的小工具

分压电阻计算 两点电阻串联, 两电阻并联, 三电阻混联 贴片两点电阻串联,贴片 两电阻并联, 贴片三电阻混联 如果有兴趣可以下载看看

2017-09-15

Cadence高速电路板设计与仿真

很不错的资料,适合初学者使用。找了很久才找到的资料。欢迎下载。

2010-09-24

linux下用C编写的贪吃蛇游戏,编着玩的

编译的时候要加 -lcurses参数 如下 gcc snake.c -lcurses

2009-02-28

空空如也

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

TA关注的人

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