- 博客(28)
- 资源 (2)
- 收藏
- 关注
原创 《C专家编程》随笔9:第三章C语言声明分析函数解析
在C语言中,复杂的声明需要仔细分析。但一旦掌握了技巧,任何复杂的分析都显而易见。为了更清晰明白声明的分析过程,将详细分析声明的思路及函数。分析声明的过程如下:下边是对第三章章尾的源码,及分析:#include <stdio.h>#include<string.h>#include<ctype.h>#include<stdlib.h>#defineMA...
2018-04-11 09:37:51
294
转载 《C专家编程》随笔8:C语言命名空间
参考博客: https://blog.youkuaiyun.com/jxb198899/article/details/27225503C语言命名空间分析准则:1、在同一命名空间、相同作用域中,任何名字须具有唯一性2、每个结构和联合内部都有自己的命名空间(独立于其他空间)3、结构标签、联合标签、枚举标签共用一个命名空间(独立于其他空间)4、goto使用的标签名,只要在同一函数内部唯一(独立于其他空间)5、所...
2018-04-10 09:23:53
227
转载 《C专家编程》随笔7:参数传递
这是别人的一些讨论:https://bbs.youkuaiyun.com/topics/350231360这个帖子里说道:函数调用的时候,参数的传递顺序(从左向右还是从右向左)和方式(用栈传递还是用寄存器传递)根据编译器的不同而不同。传递顺序:从右向左,从左向右传递方式:未优化的场合,可能使用寄存器或者栈,优化的场合也是如此,C++又有些不同,可能头2个参数用寄存器,后面的参数用栈,64位又有不同。总体来说:...
2018-04-08 21:18:50
194
转载 《C专家编程》随笔6:struct位域
https://www.cnblogs.com/x_wukong/p/5743369.html 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的...
2018-04-08 21:09:26
223
转载 《C专家编程》随笔5:Lint
这里给出几个参考博客静态代码检查工具PC-Linthttps://blog.youkuaiyun.com/orbit/article/details/824505https://blog.youkuaiyun.com/orbit/article/details/971457PC-Lint安装详细配置(VC++6.0环境)http://blog.sina.com.cn/s/blog_6d7fa49b01012uqd.htm...
2018-04-08 16:29:31
274
原创 《C专家编程》随笔3:赋值传递
而 char *cp; const char *ccp; ccp = cp;是合法的。why?解读: 要使赋值形式合法,必须满足下列条件之一:两个操作数都是指向有限定符或无限定符的相容类型的指针,左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。 假设,左操作数的类型是FOO2,它是指向FOO的指针,而FOO是一个没有限定符的指针,它指向一个带有const限定符的c...
2018-04-07 19:45:53
193
转载 《C专家编程》随笔2:指针数组和数组指针
指针数组和数组指针,详解可参考:https://blog.youkuaiyun.com/men_wen/article/details/52694069
2018-04-07 19:30:48
174
原创 《C专家编程》随笔1:读者心得
自己在阅读完《C和指针》和《C陷阱与缺陷》之后,结合实际的项目,对C语言有了一定熟悉。 《C和指针》是一本非常不错的C语言基础书,详细介绍了C语言的知识点,相对于谭浩强的红书之外,学到了许多基础知识,应该是一个C语言入门的必备。 《C陷阱与缺陷》多讲一些前辈们遇到的问题,自己看了一遍,可能对遇到的问题会有一些帮助,但我自己来说感触并不深,现在已经记不起来什么了,以后可能再...
2018-04-07 19:26:04
431
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(5):系统滴答定时器
处理器有一个24位系统定时器,SysTick,它可以向下计数从重载值到0,在下一个时钟边沿重载LOAD寄存器中的值,然后在随后的时钟下降计数。 当处理器停止进行调试时,计数值不再缩减。 系统滴答控制和状态寄存器(STK_CTRL)地址偏移 0x00复位值 0x0000 0000需要的特权 特权的系统滴答控制和状态寄存器(CTRL)使能滴答定时器的特点。位31:17 保留,...
2018-04-02 12:04:52
568
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(4):系统控制块
系统控制块提供了系统执行信息和系统控制。这包括系统异常的配置、控制和报告。CMSIS绘图Cortex-M3 SCB寄存器,为了改善软件效率。CMSIS简化了SCB寄存器展示。在CMSIS中,字节数组SHP[0]~SHP[12]相当于寄存器SHPR1~SHPR3。辅助控制寄存器(SCB_ACTLR)地址偏移 0x00 (基地址=0xE000E008)复位值 0x0000 0000需要的特权 特权的辅...
2018-04-02 12:02:05
4343
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(3):嵌套向量中断控制器
这一部分描述了嵌套向量中断控制器和它使用到的寄存器。NVIC支持: 高达81个中断(根据STM32设备的型号,参照数据手册); 对每个中断可编程优先级级别0-15,一个高的优先级级别相应着较低的优先级,所以级别0是最高的中断优先级; 中断信号的电平和脉冲检测; 动态调整中断优先级; 将优先级值分组为组优先级和子优先级域; 中断...
2018-04-02 11:07:26
838
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(2):内存保护单元
这一部分描述在一些stm32微控制器应用的内存保护单元。参看相应的设备手册检查在我们使用的stm32类型中是否存在。 内存保护单元划分内存地图为许多区域,而且定义了每一区域的定位、大小、访问权限和内存属性。它支持:每一区域独立属性设置;重叠区;将内存属性导出到系统。 内存属性影响到区域内存访问的行为。Cortex-M3内存管理单元定义:8个独立的内存区域,0-7;一个背景区...
2018-04-02 11:01:01
3436
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(1):关于STM32核心外设
私有外设总线的地址地图如下:软件可以在0xE000ED90读MPU类型寄存器,测试内存保护单元的存在。在寄存器描述中,所需的特权给出了访问寄存器时所需的特权级别, 特权的:只有特权软件可以访问这个寄存器 无特权的无特权和特权的软件都可以访问这个寄存器。...
2018-04-02 10:55:00
428
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记三(4):Cortex-M3指令分类
1.内存访问指令2.通用数据处理指令3.乘除指令4.饱和指令 SSAT和USAT5.位域指令6.混杂指令
2018-03-29 21:22:38
372
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记三(3):Cortex-M3指令描述
下面部分将会给出使用指令的更多信息。 1. 操作对象: 一个指令操作对象可以是ARM寄存器、常量、或另一个指令具体参数。指令作用于操作对象而且通常间结果存储在目的寄存器。当在指令中有一个目的寄存器,通常在操作对象前指定。在一些指令中,操作数是灵活的,它们可以是寄存器,也可以是常量。2. 使用PC(程序计数器)或SP(栈指针)的限制条件: 许多指令关于你...
2018-03-29 21:19:07
5746
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记三(2):Cortex-M3内部函数
ANSI 不能直接访问Cortex-M3指令。这部分描述了可以生成那些指令的内在函数,由CMSIS提供可能有编译器提供。如果C编译器不支持一个适当的内部函数,我们可能不得不使用内嵌汇编访问一些函数。CMSIS提供了内部函数用于生成ANSI不可以直接访问的指令。如下:CMSIS也提供了一些用MRS和MSR指令访问特殊寄存器的函数。...
2018-03-29 21:17:46
301
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记三(1):Cortex-M3指令集概要
处理器执行一个thumb指令集的版本。支持的指令如下:
2018-03-29 21:16:15
1131
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(5):Cortex-M3处理器能量管理
Stm32和Cortex-M3处理器睡眠模式降低能量损耗: 睡眠模式停止处理器时钟,所有其它系统和外设时钟保持运行。 深度睡眠模式停止了大部分stm32系统和外设时钟。在产品级别,可能相应的为停止模式和待机模式。 进入睡眠模式:等待中断指令,可以引起快速进入睡眠模式。当处理器执行一个等待中断指令后,停止执行指令并且进入睡眠模式。等待事件指令,如果一位时间寄存器的...
2018-03-28 12:38:16
934
1
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(4):Cortex-M3处理器错误处理
错误是异常的一个子集。总线错误:一个指令获取或向量表读取,数据访问;一个内部检测到的错误:未定义的指令,尝试改变BX指令的状态;尝试从一个标记被XN内存区域执行指令。 除了硬件错误外的所有错误异常均有可配置的异常优先级。软件可以失能那些错误处理的执行。 通常,异常的优先级连同异常屏蔽寄存器的值共同决定处理器是否进入错误处理和是否可以抢占另一个错误处理。 ...
2018-03-28 12:37:31
602
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(3):Cortex-M3处理器异常模型
这一部分描述异常模型。 每一个异常都存在一个状态: 闲置 这个异常没有活跃,没有暂停 待进行 异常等待被处理器服务。一个外设或软件中断请求可以改变相应中断的状态到即将发生状态。 ·活跃 一个异常正在被处理器服务但还没有完成。一个异常可以打断另一个异常的执行,在这种情况下,两个异常都在活跃状态。 活跃和待进行 ...
2018-03-28 12:36:05
557
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(2):Cortex-M3处理器内存模型
这一部分描述了处理器内存图,内存访问的行为,位带特征。处理器有一个提供了高达4GB可寻找内存的固定内存图。内存地图分裂内存图为区域。每一个区域定义了内存的类型,一些区域还有额外的内存属性。内存的类型和属性决定了这区域访问的行为。 内存类型分为3类: 普通 处理器可以为了效率、执行预测性的读进行重排序处理。 设备 处理器保留相对于其它设备或...
2018-03-28 12:32:17
1183
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(1):Cortex-M3处理器程序模型
本节介绍Cortex-M3程序模型。除了各个核心寄存器描述之外,还包括关于程序执行和堆栈的处理器模式和特权级别的信息。处理器模式: 线程模式:用于执行应用软件。 处理模式:用于处理异常,当执行完异常处理时,返回线程模式。软件执行的特权级别: 无特权级别 ...
2018-03-28 12:28:53
1132
翻译 STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记一:文档说明
本手册对stm32F10XXX/20XXX/21XXX/L1XXXCortex -M3内核处理器模型、指令集、核心外围做出了充分的描述。Cortex -M3内核处理器是一个高性能的32bit处理器,对开发者提供了显著的优点:联合快速中断处理的突出处理器性能;增强系统大量断点调试和跟踪能力;高效的处理器内核,系统和内存;集成睡眠模式的超低功耗;平台安全保证。 Co...
2018-03-24 16:45:28
1113
翻译 STM32F10XX 硬件入门 阅读笔记四:调试管理
引脚分配情况: 在复位后(系统复位或者上电复位),用于SWJ——DP的5个引脚均被分配为专用的引脚,可以被调试主机使用。跟踪输出没有被分配,除非调试主机编程。 Stm32F10XX MCU操作一个寄存器可以失能部分或全部引脚,释放它们关联的引脚以用着GPIO。寄存器由用户程序编程而不是调试主机。Stm32F10XX 嵌入了内部上拉下拉电阻,避免不受控制的I/O电平。JNRST...
2018-03-24 12:37:46
219
翻译 STM32F10XX 硬件入门 阅读笔记三:引导配置
Boot引脚的值会在复位后的第4个上升沿读取。当系统进入待机模式并离开时,会对boot引脚进行重采样。1. 从主flash内存启动,常规方法。2. 从系统存储器启动,利用ST公司在这个区域预置的引导装载程序,通过串口、USB、CAN等接口下载程序。3. 从SRAM启动,可以用于调试程序,但不具备掉电保存程序的能力。...
2018-03-24 12:35:39
219
翻译 STM32F10XX 硬件入门 阅读笔记二:时钟
1. 驱动系统时钟的有三种时钟源:内部高速时钟;外部高速时钟;PLL锁相环时钟源。2. 设备有两个第二时钟源:40KHZ低速内部时钟源,驱动独立看门狗电路。可选择的驱动RTC电路;32.768KHZ的外部低速晶振,可选择的驱动RTC电路。3. 每一种时钟源可单独的关闭可开启,当无用时可关闭以优化能量损耗。4. 外部高速时钟源可以通过两种时钟源产生:外部时钟;外部晶振/陶瓷谐振器。 ...
2018-03-24 12:34:09
882
翻译 STM32F10XX 硬件入门 阅读笔记一:电源供应
1.1介绍1. 独立ADC转换器可以在VREF+单独供电,供电电压范围从2.4V到VDDA(仅在100pin,140pin封装中可用;在64pin及小于64pin的封装中不可用,VREF+和VREF-已在内部连接VDDA和VssA)2. 后备电池为了保持备份寄存器中的数据,当VDD变低时,VBAT作为待机电压连接到备份电路(包含RTC电路)。连接VBAT电源的开关由(PDR)电源下降复位电路...
2018-03-24 11:32:30
1420
sublime text3 破解版
2019-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人