- 博客(7)
- 收藏
- 关注
原创 UCOS —— 全局变量的定义和声明
全局变量在定义后,可被其他模块通过extern关键字调用; 一旦extern关键字使用错误,则会造成重复定义的错误!UCOS 中做了一个巧妙的处理,通过模块.c文件调用模块对应的.h文件,实现全局变量的定义,其他C文件调用这个.h文件,则会作为extern处理。这个巧妙地处理具体如下: 在.h文件中定义全局宏:xxx_EXT #ifdef xxx_GLOBALS#de...
2018-09-08 22:58:58
2121
原创 Keil 编译错误 -- error: L6002U
在学习 STM32 加密库例程时遇到了一个错误, 提示加密库文件找不到。 路径是对的,文件也确实存在,可是重新编译还是会提示: STM32F103RB_Nucleo\STM32F103RB_Nucleo.axf: error: L6002U: Could not open file ..\..\..\..\..\Middlewares\ST\STM32_Cryptographic\Lib\ST...
2018-09-04 18:36:04
9026
转载 单周期、多周期和流水线处理器
1)单周期的CPU会在一个时钟周期内完成所有的工作,既从指令取出,到得到结果,全部在一个时钟之内完成。2)多周期CPU的设计是将整个CPU的执行过程分成几个阶段,每个阶段用一个时钟去完成。不仅能提高CPU的工作频率,还为组成指令流水线提供了基础。3)在多周期CPU设计的基础上,利用各阶段电路间可并行执行的特点,让各个阶段的执行在时间上重叠起来,这种技术就是流水线技术。...
2018-05-28 09:54:53
29201
转载 printf 的宏定义版本
前言:我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式来输出调试语句。比如,定义一个宏开关:#de
2017-04-14 18:25:12
300
转载 STM32中的几个时钟SysTick、FCLK、SYSCLK、HCLK(For STM32F10x)
用时钟源来产生时钟!在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL①、HSI是高速内部时钟,RC振荡器,频率为8MHz。②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。③、LSI是低速内部时钟,RC振荡器,频率为40kHz。④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。⑤、P
2017-04-13 20:58:29
1786
原创 5.15版本 ARM MDK编译STM32F0编译标准外设库例程报错处理
使用5.15版本MDK编译STM32F0编译标准外设库例程(STM32F0xx_StdPeriph_Lib_V1.5.0),出现:error: #5: cannot open source input file "core_cm0.h": No such file or directory如图所示:MDK找不到“core_cm0.h”这个文件,既然如此就手动添加该头文
2017-04-06 11:48:58
1377
转载 结构体字节对齐
在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因: 1) 某些平台只能在...
2015-09-07 22:18:34
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅