中级会员
 
- 积分
- 214
- 金钱
- 214
- 注册时间
- 2015-12-21
- 在线时间
- 18 小时
|
1金钱
core_cm3.h中的函数与core_cm3.c中对应的函数有什么关系?
比如,调用__get_CONTROL,找到的是core_cm3.h中的,core_cm3.c文件去掉也可以
但是__get_MSP,则是在core_cm3.h中**,在core_cm3.c中定义的,必须有core_cm3.c
没太搞清楚这两个文件的用意
另外,新版本core_cm3.h又包含了两个头文件core_cmInstr.h与core_cmFunc.h,而这两个头文件里面都是空的,都包含了一个cmsis_armcc.h
其实本质上是一样的,把原来core_cm3.h中的部分内容挪到了cmsis_armcc.h里面,可能是为了移植更方便,结构更合理一些吧
不过,新版本不需要core_cm3.c了,cmsis_armcc.h中实现了__get_MSP,但是看不懂,也不是汇编,是不是在库文件中实现的呀
core_cm3.h:
static __INLINE uint32_t __get_CONTROL(void)
{
register uint32_t __regControl __ASM("control");
return(__regControl);
}
extern uint32_t __get_MSP(void);
core_cm3.c中为:
__ASM uint32_t __get_CONTROL(void)
{
mrs r0, control
bx lr
}
__ASM uint32_t __get_MSP(void)
{
mrs r0, msp
bx lr
}
cmsis_armcc.h中为:
__STATIC_INLINE uint32_t __get_CONTROL(void)
{
register uint32_t __regControl __ASM("control");
return(__regControl);
}
__STATIC_INLINE uint32_t __get_MSP(void)
{
register uint32_t __regMainStackPointer __ASM("msp");
return(__regMainStackPointer);
}
|
|