- 博客(24)
- 资源 (1)
- 收藏
- 关注
转载 python 操作符**与*
1.**两个乘号就是乘方,比如2**4,结果就是2的4次方,结果是16 一个乘号*,如果操作数是两个数字,就是这两个数字相乘,如2*4,结果为8 *如果是字符串、列表、元组与一个整数N相乘,返回一个其所有元素重复N次的同类型对象,比如"str"*3将返回字符串"strstrstr" 2.如果是函数定义中参数前的*表示的是将调用时的多个参数放入元组中,**则表示将调用函数时的关键字参数放入一个字典
2015-07-06 18:13:34
736
转载 FPGA三大法则
面积与速度的互换 1.速度换面积 (速度换面积的关键是高速基本单元的复用) 速度优势可以换取面积的节约。面积越小,就意味着可以用更低的成本来实现产品的功 能。速度换面积的原则在一些较复杂的算法设计中常常会用到。在这些算法设计中,流水线设计常常是必须用到的技术。在流水线的设计中,这些被重复使用但是使 用次数不同的模块将会占用大量的FPGA资源。对FPGA的设计技术进行改造,将被重复使用的算法
2015-04-01 17:44:56
1115
原创 STM32学习日记7.FLASH
FLASH 寄存器结构描述了固件函数库所使用的数据结构,固件库函数介绍了函数库里的所有函数。 FLASH 寄存器结构typedef struct { vu32 ACR; vu32 KEYR; vu32 OPTKEYR; vu32 SR; vu32 CR; vu32 AR; vu32 RESERVED; vu32 OBR; vu32 WRPR; } FLASH_TypeDef; typedef
2015-03-25 16:23:25
629
原创 STM32学习日记6.DMA&EXTI
DMA控制器提供7个数据通道的访问。由于外设实现了向存储器的映射,因此数据对来自或者发向外设的数据传输,也可以像内存之间的数据传输一样管理。 DMA 寄存器结构 DMA 寄存器结构 DMA寄存器结构 typedef struct { vu32 CCR; vu32 CNDTR; vu32 CPAR; vu32 CMAR; } DMA_Channel_TypeDef; typede
2015-03-13 16:46:40
802
1
原创 STM32学习日记5.CAN
支持CAN 协议2.0A和2.0B CAN寄存器结构 typedef struct { vu32 MCR; vu32 MSR; vu32 TSR; vu32 RF0R; vu32 RF1R; vu32 IER; vu32 ESR; vu32 BTR; u32 RESERVED0[88]; CAN_TxMailBox_TypeDef sTxMailBox[3]; CAN_FIFOMa
2015-03-13 11:36:13
978
原创 STM32学习日记4.BKP
备份寄存器由10个16位寄存器组成,可用来存储20 个字节的用户应用程序数据。 当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。 此外,BKP 控制寄存器用来管理侵入检测和RTC 校准功能 BKP寄存器结构 typedef struct { u32 RESERVED0; vu16 DR1; u16 RESERVED1; vu16 DR2; u16 RE
2015-03-13 10:37:10
838
原创 STM32学习日记3.ADC
ADC的分辨率为12位 ADC寄存器:(19个) SR 状态寄存器 CR(1、2) 控制寄存器(1、2) SMPR(1、2) 采样时间寄存器(1、2) JOFR(1、2、3、4) 注入通道偏移寄存器(1、2、3、4) HTR 看门狗高阀值寄存器 LTR 看门狗低阀寄存器 SQR(1、2、3) 规则序列寄存器(1、2、3) DR(1、2、3、4) 规则数据寄
2015-03-12 11:16:35
539
原创 STM32学习日记2.固件函数库
STM32F10x固件函数库被压缩在一个zip文件中。解压该文件会产生一个文件夹:STM32F10xFWLib\FWLib,下有3个子文件。 1.文件夹Examplcs:对每一个STM32外设都包含有一个子文件夹,这些文件夹包含整套文件组成典型的例子,用来示范如何使用对应的外设。 readme.txt:每一个例子的简单描述和使用说明。 stm32f10x_conf.h:设置所有使用到外设,由
2015-03-12 08:57:07
1103
原创 STM32学习日记1.命名规范
字母缩写 ADC 数模转换器 BKP 备份寄存器 CAN 控制寄存器 DMA 直接内存存取控制器 EXTI 外部中断事件控制器 FLASH 闪存存储器 GPIO 通用寄存器 I2C 内部集成电路 IWDG 独立看门狗 NVIC 嵌套中断向量列表控制器 PWR 电源、功耗控制 RCC 复位与电路控制器 RTC 实时时钟
2015-03-11 17:16:55
1057
转载 printf()的标志
- 左对齐 + 有符号的值若为正,则显示带加号的符号;若为负,则带减号的符号 (空格) 有符号的值若为正,则显示带前道空格(但是不显示符号);若为负,则带减号符号,+标志会覆盖空格标志 # 使用转换的可选形式。若为%o格式,则以0开始;若为%x或%X格式,则以0x或0X开始。对于所有的浮点形式,#标志了即使不跟如何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随零被删除。
2015-03-06 16:54:40
1069
原创 C语言不经常用的东西
#undif 这条预处理指令用于移除一个宏 #运算符 利用宏参数创建字符串 ##运算符 把两个语言符号组合成单个语言符号 ...和__VA_ARGS__ 可变宏
2015-03-06 11:18:32
472
转载 C语言函数
int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int
2015-03-04 10:13:04
516
转载 野指针
//一个造成“野指针”的典型例子 unsigned char *Functions(void) { unsigned char Number = 0; //函数内的局部变量 unsigned char *p = &(Number); //指向该局部变量的指针 …… return p; //一个野指针诞生了 }很多原因都可以造成“野指针”,对于初学者来说,如果试图采 用背公式的方法记录下所
2015-03-03 17:07:44
576
转载 大端对齐与小端对齐
地址绑定技术,在概念上,等效于联合体 union,例如: //联合体实现地址绑定 union Example { unsigned long dNumber; unsigned char Array[4]; }Data;在这个联合体 Example 中, unsigned long 型变量 dNumebr 和 unsigned char 型数组 Array[]拥有同样的起始地址
2015-03-03 17:03:13
1639
转载 地址绑定与“偷天换日”
指针的存储本质是 unsigned int 型变量。因此,我们可以将一个 指针还原为普通变量,甚至可以将一个普通整型变量强行转换为一个 指针: unsigned int Number = 0; //普通整型变量 unsigned int *p = NULL; //普通指针 p = (unsigned int *)Number; //青蛙变王子 Number = (unsigned int
2015-03-03 16:51:52
383
转载 如何绕过const限定, “偷天换日”修改这一本不应该被 修改的变量。
指针常量、全局变量、指针变量、不应该被修改的指针变量 指针常量 = 普通整数强制转化为某一个类型的指针 例如: ((unsigned int *)0x004B) 全局变量 = (*(指针常量)) 如果试图采用这种方式强行将某一MemorySpace空间征用做 (*((unsigned int *)0x004B))就是一个unsigned int型的变量,如果 我们非要给这个变量加一
2015-03-03 16:48:24
704
转载 如何动态的建立大小可变的一维数组
动态创建可变大小的一维数组,其关键在于正确计算数组所需的空间 大小。假设,我们要创建一个 float 型的数组,该数组的大小由变量 n 来 动态设定: //动态创建一维数组 float *pArr = (float)malloc(sizeof(float) * n); if (pArr == NULL) //检查空间是否分配成功 { //这里插入空间申请失败的处理代码 } 访问数组
2015-03-03 16:34:35
1102
转载 如何动态的建立大小已知的二维数组(多维数组)
动态创建一个大小已知的二位数组, 首先, 我们需要利用 typedef 建立 一个自定义类型。通过该类型我们可以描述二维数组的信息。假设我们要 创建一个 4*10 的 int 型二维数组,则对应的代码为: //建立自定义类型,描述而维数组信息 typedef int ARRAY[4][10]; 接下来, 我们声明一个指向该类型二维数组的指针——也就是一个“指 向数组的指针”:
2015-03-03 16:31:06
696
转载 在 ICC 中如何正常的进行动态内存分配
在 ICC 中,我们是无法直接使用 C 语言基本库函数 malloc()和 free()进 行动态内存分配和释放——即便包含了 C 语言标准库“ stdlib.h”也是一样。 这是因为, 这里的动态内存分配是一种堆式分配。 为了节省空间开支, ICC 没有为我们开辟默认的堆空间用于动态内存分配。使用这一功能,我们需 要人工添加一个(或多个)堆。 在 ICC 提供的 C 语言标
2015-03-03 16:28:47
775
转载 指针变量的定义
指针变量与一般变量的定义类似,形式如下: 数据类型 [存储器类型1] * [存储器类型2] 标示符; [存储器类型1]表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用3个字节,第一个字节存放该指针存储器类型的编码(在编译时由编译模式的默认值确定),第二个字节和第三个字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码
2015-03-02 09:33:07
661
转载 指针概念综述
1.变量的地址就是变量的指针,用于存储地址的变量称为指针变量。当将一个变量的地址赋给某一个指针变量时,称这个指针变量指向该变量。此时,既可用变量名直接存取变量的值,也可用指针变量间接存取变量的值。 2.C语言中的数组变量、字符串数组变量、字符串、结构体变量、共用体变量、枚举型变量,甚至函数名及函数的形参以及文件等都用指针,可用定义相应额指针变量存放这些指针。同样有两种方法存放变量的值:用变量名直
2015-02-28 16:31:47
473
转载 指向函数的指针
指向函数的指针的一般形式为: 类型声明符 (*指针变量名)(); “类型声明符”表示被指函数的返回值的类型;“(*指针变量名)”表示 “*” 后面的变量是定 义的指针变量;“()”表示指针变量所指的是一个函数。 好处:提高程序的通用性和可适应性。 C语言程序是由若干个函数组成的,每个函数在编译链接后总是占用一段连续的内存区, 而函数名是该函数所占内存区的入口地址,每
2015-02-28 15:12:32
469
转载 基础的重要性(程序员之路)
学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网 上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯 路。 什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理 等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有
2015-02-27 16:20:45
504
转载 基本的优化规则
对代码进行优化处理时,需要考虑一些基本的优化规则: 1.在代码优化之前,先要有一个同一代码的可靠的、非优化的版本。 2.应利用算法优化措施,而不是通过提升系统特性来获取最大限度的性能提升。 3.不要将代码优化与汇编语言实现混为一谈。 4.在试图用汇编语言重写程序之前,先查看一下编译器生成的汇编代码并估算它的效率。 5.如果编译器生成的汇编语言列表虽然显得很不错,但是程序运行起来仍然很慢,
2015-02-27 16:12:00
427
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅