OS_CPU_CM3_NVIC_PRIO_ST = OS_CPU_CM3_NVIC_PRIO_MIN;
/* Enable timer. */
OS_CPU_CM3_NVIC_ST_CTRL |= OS_CPU_CM3_NVIC_ST_CTRL_CLK_SRC | OS_CPU_CM3_NVIC_ST_CTRL_ENABLE;
/* Enable timer interrupt. */
OS_CPU_CM3_NVIC_ST_CTRL |= OS_CPU_CM3_NVIC_ST_CTRL_INTEN;
}
#endif
注释掉(前面加#if 0 ,后面加#endif 即可)。
4. 接着修改os_cpu_a.asm。
由于编译器的原因,要将文件中的PUBIC改为图 中的EXPORT。
EXPORT OS_CPU_SR_Save
EXPORT OS_CPU_SR_Restore
EXPORT OSStartHighRdy
EXPORT OSCtxSw
EXPORT OSIntCtxSw
EXPORT OS_CPU_PendSVHandler
下面这个也要进行修改:
原来:
RSEG CODE:CODE:NOROOT(2)
修改后:
AREA |.text|,CODE,READONLY,ALIGN=2
THUMB
REQUIRE8
PRESERVE8
5. 由于编译器的不同,还需要对os_dbg.c进行修改。
将os_dbg.c中
#define OS_COMPILER_OPT __root
修改为:
#define OS_COMPILER_OPT
6. 因为本系统使用了标准外设库CMSIS中startup_stm32f10x_hd.s作为启动文件的,还没有设置 OS_CPU_SysTickHandler。而startup_stm32f10x_hd.s文件中,PendSV 中断向量名为PendSV_Handler,因此需要把所有出现PendSV_Handler的地方替换成OS_CPU_PendSVHandler。
至此,修改uC/OS-II代码结束。接下去就是编写自己的代码。
3.2.3 编写各用户文件中关于操作系统的部分
1. bsp.c文件
首先定义SysTick定时器。在文件中添加如下所示的函数定义,并在bsp.h中声明这个函数。
void SysTick_init(void)
{
SysTick_Config(SystemCoreClock/OS_TICKS_PER_SEC);//初始化并使能SysTick定时器
}
然后编写开发板初始化函数BSP_Init(),用来设置系统时钟,初始化硬件。如下所示。
void BSP_Init(void)
{
//SystemInit(); /* 配置系统时钟为72M */
SysTick_init(); /* 初始化并使能SysTick定时器 */
LED_GPIO_Config(); /* LED 端口初始化 */
}
2. stm32f10x_it.c文件
在该文件中添加SysTick中断的处理代码:
void SysTick_Handler(void)
{
OSIntEnter();
OSTimeTick();
OSIntExit();
}
3. includes.h文件
includes.h文件是保存全部头文件的头文件,方便理清工程函数思路。
- 上一篇:ZigBee物联网网络数据收集平台设计+流程图
- 下一篇:Rockwell PLC在电梯自动控制系统中的应用
-
-
-
-
-
-
-
C++最短路径算法研究和程序设计
g-C3N4光催化剂的制备和光催化性能研究
浅析中国古代宗法制度
巴金《激流三部曲》高觉新的悲剧命运
现代简约美式风格在室内家装中的运用
上市公司股权结构对经营绩效的影响研究
江苏省某高中学生体质现状的调查研究
中国传统元素在游戏角色...
NFC协议物理层的软件实现+文献综述
高警觉工作人群的元情绪...