历史上的今天
返回首页

历史上的今天

今天是:2024年12月11日(星期三)

正在发生

2019年12月11日 | Keil uCos 2.52 stm32 【worldsing笔记】

2019-12-11 来源:eefocus

1、uCOSii V2.52 
   a、加了7个可以配置的钩子函数宏 
    #define OS_TASK_CREATE_HOOK_EN    0    /* 任务创建时调用钩子函数      使能 1 / 禁止 0                    */ 
    #define OS_TASK_STAT_HOOK_EN      0    /* 统计任务运行时调用钩子函数  使能 1 / 禁止 0                    */ 
    #define OS_TASK_SW_HOOK_EN        1    /* 任务调度时调用钩子函数      使能 1 / 禁止 0                    */ 
    #define OS_TIME_TICK_HOOK_EN      1    /* 滴答中断时调用钩子函数      使能 1 / 禁止 0                    */ 
    #define OS_TCB_INIT_HOOK_EN       0    /* TCB初始化时调用钩子函数     使能 1 / 禁止 0                    */ 
    #define OS_TASK_IDLE_HOOK_EN      0    /* 统计任务运行时调用钩子函数  使能 1 / 禁止 0                    */ 
    #define OS_INIT_BEGIN_HOOK_EN     0    /* OS初始化开始时调用钩子函数  使能 1 / 禁止 0                    */ 
    #define OS_INIT_END_HOOK_EN       0    /* OS初始化结束时调用钩子函数  使能 1 / 禁止 0                    */ 
    b、加了创建任务是自动分配栈接口OSSetupTask和宏,也可以用原生的OSTaskCreate(),OSSetupTask(任务名, 优先级); 
    #define  OS_TASK_AUTO_STK_SIZE   128  /* 默认用户任务栈大小 单位类型:OS_STK                             */ 
    #define  OS_MAX_TASK_AUTO_STK      2  /* 使用默认栈的任务数,0 不使用,必须小于等于 OS_MAX_TASKS          */ 
                                          /* 使用默认分配栈,每个栈大小都是OS_TASK_STK_SIZE                  */ 
    OS_MAX_TASK_AUTO_STK 定义为0要自行定按照uCos标准接口写应用代码; 
    c、应用程序无需定义main(),无需对SysTick初始化(在OS_CPU_C.c中完成),定义MainTask即可 
    void  MainTask (void *pArg) 
    { 
        //这里放入板子硬件初始化代码 
        //创建其他任务 
        OSSetupTask(Task0, 2); 
        while(1) 
        { 
            OSTimeDly(100); 
            pArg = pArg; 
        } 
    } 
    d、系统默认开启任务调度时调用钩子函数和滴答中断时调用钩子函数 
    当LED在任务正常调度时以10:90 个Tick闪烁 
    当LED在任务非正常调度时以1:1 个Tick闪烁 
    #define LED_GPIO        GPIOE                               /*LED IO口                                 */ 
    #define LED_GPIO_PIN    GPIO_Pin_12                         /*LED IO口引脚号                            */ 
    #define LED_GPIO_CLK    RCC_APB2Periph_GPIOE                               /*LED IO时钟名                   */ 
    #define LED_ON()        LED_GPIO->ODR &= ~LED_GPIO_PIN      /*LED开 低电平                              */ 
    #define LED_OFF()       LED_GPIO->ODR |=  LED_GPIO_PIN      /*LED开 高电平                              */ 
    #define LED_REV()       RevBit(LED_GPIO->ODR, 12)           /*LED 状态反转                              */ 
2、stm32 Lib V3.5 
    a.startup_stm32f10x_md.s 把默认的软件中断和定时器中断名改为: OS_CPU_PendSVHandler  和  OS_CPU_SysTickHandler 
    b、stm32f10x.h库检测关闭,定义为:#define assert_param(a)

3、在工程设置选项卡C/C++ 定义cpu类型 STM32F10X_MD

4、测试环境Keil MDK 4.7a  stm32f103vb

 

 

应用Demo:

#include "includes.h" 
void Task0 (void *pArg);

/*   主任务 
*/ 
void  MainTask (void *pArg) 

     OSSetupTask(Task0, 2); 
    while(1) 
    { 
         OSTimeDly(100); 
        pArg = pArg; 
    } 
}

/*   其他任务 
*/ 
void Task0 (void *pArg) 

    int cnt; 
  cnt = 0; 
    while(1) 
    { 
        OSTimeDly(10); 
        pArg = pArg; 
        cnt++; 
        if(cnt == 100) 
            while(1); 
    } 
}


推荐阅读

史海拾趣

骏晔科技(DreamLNK)公司的发展小趣事

骏晔科技非常重视知识产权的积累与保护。公司拥有一支专业的研发团队,致力于新产品的研发和技术创新。同时,公司还积极申请专利和软件著作权,保护自身的技术成果。截至目前,骏晔科技已经拥有8个专利信息和12个软件著作权,这些知识产权的拥有,为公司的发展提供了强有力的支撑。

台湾奇力(Chip)公司的发展小趣事

奇力公司自创立之初,就致力于LED芯片的研发与生产。在技术积累方面,奇力公司不断引进先进的生产设备和技术人才,通过自主研发和合作创新,不断提升产品性能和质量。随着技术的突破,奇力公司逐渐在LED芯片市场上崭露头角,以其亮度高、性能稳定的产品赢得了客户的信赖。

Aborn Electronics Inc公司的发展小趣事

在激烈的市场竞争中,成本控制是企业生存和发展的重要因素之一。Aborn Electronics深知这一点,因此在供应链管理上下了大力气。公司与多家优质供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量可靠。同时,通过对生产流程的不断优化和改进,降低了生产成本,提高了生产效率。这些措施使得Aborn Electronics的产品在市场上更具竞争力。

Genesys Logic公司的发展小趣事

在20世纪70年代初,一家名为“General Microcircuits”的初创公司(此名称为虚构,以符合问题要求)凭借其在集成电路设计领域的突破性创新迅速崛起。公司创始人李博士带领团队研发出了一种新型低功耗微控制器,该产品在功耗管理上实现了前所未有的效率,极大地延长了便携式电子设备的电池寿命。这一技术创新迅速吸引了市场关注,多家知名电子产品制造商开始采用其芯片,推动了“General Microcircuits”在行业内的知名度与市场份额的快速增长。

南京国博公司的发展小趣事

近年来,国博电子凭借其卓越的技术实力和市场表现,荣获了多项荣誉和奖项。包括“2023-2024年度射频芯片市场最佳产品奖”、“2022年度联合创新体最高绩效奖励支持”等。这些荣誉不仅是对公司技术实力和市场地位的认可,也是对公司未来发展潜力的肯定。国博电子将继续秉持“用‘芯’创造未来”的企业文化,致力于成为全球射频电子领域的行业领导者。

Bridgelux公司的发展小趣事

Bridgelux公司成立于XXXX年,由一群富有远见和创新精神的工程师创立。他们看到了LED照明技术的巨大潜力,并致力于将其商业化。公司初期面临资金和技术双重挑战,但他们凭借坚定的信念和不懈的努力,成功开发出了一系列高质量的LED照明产品,并逐渐获得了市场的认可。

问答坊 | AI 解惑

发个我用的元件库

这是我平常所用到的元件库…

查看全部问答>

wince 的cab 安装包问题(vs2005)

想做一个cab安装包,安装今日插件,按照网上的说明写了个安装程序setupdll.dll, 但是在模拟器上(pocket pc se 2003 Emulator)安装发现setupdll没有被调用(在函数Install_Exit中加了MessageBox,没有弹出,注册表也没写) cab安装包使用vs2005做的 ...…

查看全部问答>

GPRS连接问题

我用OPEN AT 已经建立完成了GPRS激活部分,但是为什么数据流中什么都收不到,在超级终端里使用ATD*99***1#,可以收到PPP包,如何使用OPEN AT ADL也能收到这些PPP包?请指教一二!我在软件里已经加入了AT命令,但是没有任何反应,到底是什么地方出了 ...…

查看全部问答>

如何用WinDbg或Waston Dump Viewer分析WinCE机台上抓取的Dump File问题

    基于ARM+WinCE 5.0的机台上有概率性的发生Data Abort,直接采用加入Debug信息逐步缩小范围的方法太费时间,所以在Image中加入了ErrorReporting的功能。     机器发生了Data Abort后,将dump file拷贝出来,就是那个后缀名 ...…

查看全部问答>

dshow CreateMediaType FreeMediaType 无法解析的外部符号

我在wince6.0上做dshow开发,已经包含的头文件和库 #include #include #include #include #include                                     &n ...…

查看全部问答>

请教中断问题

我在做关于MPC8260的工作.目前,我想为DMA加入中断处理程序.MPC8260的参考手册中 说,IDMA1的中断号是6,我使用如下函数: intConnect(INUM_TO_IVEC(6),dma_isr,0); 连接中断处理程序与中断源.但是一旦DMA结束,BC中断到来之后,整个EP8260板子就死掉 ...…

查看全部问答>

怎样取得Windows的启动分区?

我的机器上有两个硬盘 我的boot.ini: [boot loader] timeout=6 default=multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS=\"Microsoft Windows XP Professional\" /noexecut ...…

查看全部问答>

MCS-51单片机定时器问题

MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 ? MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP…

查看全部问答>

ADS1.2 调用strtoul(str,NULL,0,NULL),地址0的内容会被更改

strtoul的定义: unsigned long strtoul(const char *str, char **endptr, int requestedbase, int *ret) 可见ADS1.2会把NULL指针指向地址0,但是地址0放着复位向量,怎么样才能不改变0地址的内容呢?(当然在调用的时候可以不用NULL,而定义一个 ...…

查看全部问答>