打印
[DemoCode下载]

RTX下使用ADC, GPIO, USB MOUSE

[复制链接]
1325|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a_ziliu|  楼主 | 2015-8-20 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为案子的关系,研究了RTX,了解任务并行处理,还是有个RTOS作TASK并行处理会比较好。
写了一个例子,在KEIL RTX下把ADC取样,GPIO开关,UART打印,USB MOUSE送资料,结合起来。
NUC230_240BSP_CMSIS_V3.00.001 RTX ADC GPIO USB.zip (455.9 KB)

__task void task2 (void)      
{
while(1)
{
   os_dly_wait(10);
  adc_value=Get_ADC_Knob();
    os_sem_send(Sem_arrive1);  
}
}
有使用到Semaphore在ADC处理完後,通知UART处理的TASK去读ADC值,
__task void task4 (void)      
{
while(1)
{
    printf("0x%x\n\r", adc_value);   
  os_sem_wait(Sem_arrive1, 0xFFFF);   // The semaphores ensure both tasks arrive here before continuing   
}
}
GPIO的TASK去读ADC值改变开关速度。
__task void task3 (void)      
{
while(1)
{
   Write_LED_Color_Flash(adc_value);
}
}
USB的TASK,检查是否要送按键REPORT,其它的部份交给中断处理。
__task void task1 (void)        
{
tsk1 = os_tsk_self();      

os_tsk_prio(tsk1, 1);      

tsk2 = os_tsk_create(task2, 1);   
tsk3 = os_tsk_create(task3, 1);   
  tsk4 = os_tsk_create(task4, 1);  
os_sem_init(Sem_arrive1, 0);     // Create two semaphores each with no tokens
os_sem_init(Sem_arrive2, 0);   
while(1)
{
   uint8_t *buf;
    if(g_u8EP2Ready)
    {
        buf = (uint8_t *)(USBD_BUF_BASE + USBD_GET_EP_BUF_ADDR(EP2));
      
                /* Update new report data */
                buf[0] = 0x00;
   buf[1]=0x00;
   buf[2]=0x00;
   buf[3]=0x00;
   
                if(Get_Key_Input()==0x01)
         buf[1] = 16;
        if(Get_Key_Input()==0x02)
         buf[1] = -16;
        if(Get_Key_Input()==0x04)
        buf[2] = 16;
        if(Get_Key_Input()==0x08)
        buf[2] = -16;
           
              
      
        g_u8EP2Ready = 0;
        /* Set transfer length and trigger IN transfer */
        USBD_SET_PAYLOAD_LEN(EP2, 4);
    }
}

}

沙发
mintspring| | 2015-8-20 16:19 | 只看该作者
楼主这个方式是基于操作系统的思想做的吧

使用特权

评论回复
板凳
玛尼玛尼哄| | 2015-8-20 16:30 | 只看该作者
模数转换,输入输出口,还有USB鼠标,哦,好东西

使用特权

评论回复
地板
643757107| | 2015-8-20 16:39 | 只看该作者
tsk1 = os_tsk_self();   
这个返回值是什么啊

使用特权

评论回复
5
ayb_ice| | 2015-8-20 17:08 | 只看该作者
mintspring 发表于 2015-8-20 16:19
楼主这个方式是基于操作系统的思想做的吧

RTX是KEIL自带的一个RTOS

使用特权

评论回复
6
mintspring| | 2015-8-21 11:35 | 只看该作者
ayb_ice 发表于 2015-8-20 17:08
RTX是KEIL自带的一个RTOS

原来这样啊,以前听九哥在帖子里提到过。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

295

帖子

6

粉丝