完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
uCOS-III源文件中的汇编代码,全部选择GNU目录下的文件,主要包括:
uC-CPU/ARM-Cortex-M3/GNU/cpu_a.s uC-LIB/Ports/ARM-Cortex-M3/GNU/lib_mem_a.s uCOS-III/Ports/ARM-Cortex-M3/Generic/GNU/os_cpu_a.s 将其添加到ucos-iii.mk中。 5. 汇编文件的修改 需要的修改的汇编文件为uCOS-III/Ports/ARM-Cortex-M3/Generic/GNU/os_cpu_a.s。 cortex-m3内核通过PendSV触发任务调度,而所有的系统异常和中断的向量入口地址已经在启动文件中做了定义,PendSV的入口地址名称为PendSV_Handler,即该异常的处理函数名称必须为PendSV_Handler,而uCOS-III的os_cpu_a.s中将PendSV的汇编处理函数名称定义为OS_CPU_PendSVHandler,在产生PendSV异常后,系统找不到启动文件为其定义的PendSV_Handler入口函数,OSStart()执行后,系统会死在OSStartHang中,无法实现任务调度。必须将其名称更改为PendSV_Handler,最好也将对应头文件中的函数声明也做同样的修改。 其实,PendSV_Handler在stm32f10x_it.c中已经定义了,需要将stm32f10x_it.c中的实现屏蔽掉,防止编译报错。 为什么不保留os_cpu_a.s中的OS_CPU_PendSVHandler,去更改stm32f10x_it.c中的PendSV_Handler的实现呢?因为任务调度必须要速度很快,最好用汇编实现。 不止是PendSV,SysTick的异常入口地址在启动文件中定义为SysTick_Handler,而uCOS-III的os_cpu_c.c中将SysTick的处理函数名称定义为OS_CPU_SysTickHandler,在产生SysTick异常后,系统找不到启动文件为其定义的SysTick_Handler入口函数。 这个更改有两种方式: (1) 保留os_cpu_c.c中的OS_CPU_SysTickHandler函数,将其函数实现拷贝到stm32f10x_it.c中的SysTick_Handler函数里。 (2) 将os_cpu_c.c中的OS_CPU_SysTickHandler函数更名为SysTick_Handler,将stm32f10x_it.c中的SysTick_Handler函数屏蔽掉。 我习惯采用第一种方式。 针对第5点,还有一种是实现方式,就是把启动文件的两个异常入口地址更改为:OS_CPU_PendSVHandler和OS_CPU_SysTickHandler。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1990 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1777 浏览 1 评论
1242 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
823 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1797 浏览 2 评论
2029浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
931浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
333浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
681浏览 3评论
667浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-5 01:24 , Processed in 0.648669 second(s), Total 44, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191