OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1890|回复: 2

UCOSII(V2.91)实验1问题

[复制链接]

7

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-4-8
在线时间
12 小时
发表于 2019-6-9 11:43:53 | 显示全部楼层 |阅读模式
6金钱
编译老是出现这两个错误,是什么原因,stm32f1xx_it这个文件不能随便改吧。os_cpu_a.asm里面是汇编函数
..\OBJ\Template.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by os_cpu_a.o and stm32f1xx_it.o).
..\OBJ\Template.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by delay.o and stm32f1xx_it.o).
例程源码如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "includes.h"
/////////////////////////UCOSII任务设置///////////////////////////////////
//START 任务
//设置任务优先级
#define START_TASK_PRIO                              10 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE                                  64
//任务堆栈       
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);       
                          
//LED0任务
//设置任务优先级
#define LED0_TASK_PRIO                               7
//设置任务堆栈大小
#define LED0_STK_SIZE                                      64
//任务堆栈       
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);


//LED1任务
//设置任务优先级
#define LED1_TASK_PRIO                               6
//设置任务堆栈大小
#define LED1_STK_SIZE                                          64
//任务堆栈
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//任务函数
void led1_task(void *pdata);


int main(void)
{
       
    HAL_Init();                            //初始化HAL库   
    Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
    delay_init(72);                 //初始化延时函数
        LED_Init();                                        //初始化与LED连接的硬件接口
    OSInit();   
        OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
        OSStart();       
       
}

//开始任务
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
        pdata = pdata;
          OS_ENTER_CRITICAL();                        //进入临界区(无法被中断打断)   
        OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);                                                  
        OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);                                           
        OSTaskSuspend(START_TASK_PRIO);        //挂起起始任务.
        OS_EXIT_CRITICAL();                                //退出临界区(可以被中断打断)
}

//LED0任务
void led0_task(void *pdata)
{                
        while(1)
        {
                LED0=0;
                delay_ms(80);
                LED0=1;
                delay_ms(920);
        };
}

//LED1任务
void led1_task(void *pdata)
{          
        while(1)
        {
                LED1=0;
                delay_ms(300);
                LED1=1;
                delay_ms(300);
        };
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2018-11-19
在线时间
56 小时
发表于 2019-6-9 11:50:57 | 显示全部楼层
PendSV_Handler和SysTick_Handler重复了,在it.c文件中注释掉这两个就可以了。
回复

使用道具 举报

7

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-4-8
在线时间
12 小时
 楼主| 发表于 2019-6-9 11:57:29 | 显示全部楼层
本帖最后由 nlitzkjxydh 于 2019-6-9 11:58 编辑
molonZDYZ 发表于 2019-6-9 11:50
PendSV_Handler和SysTick_Handler重复了,在it.c文件中注释掉这两个就可以了。

我试了,好了,但是遇到类似的问题还是要去it.c文件里面注释掉吗,it.c文件改后下次做其他实验还得改回来吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 08:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表