Добрый день, коллеги!
Мучаю пример от Keil конфигурации ОСРВ RL-ARM для USB Device класса HID на отладочной плате MCB1700. Как только добавляю еще один процесс в ОСРВ, она сразу же перестает работать. А конкретнее, только разкомментирую строчки, где создается task KEYREAD и само описание KEYREAD, на дисплее даже надписи не высвечиваются, а также компьютер не видит USB устройство. Подскажите, с чем это может быть связано?
/*---------------------------------------------------------------------------- * RL-ARM - USB *---------------------------------------------------------------------------- * Name: USBD_Demo.c * Purpose: USB Device Demonstration * Rev.: V4.20 *---------------------------------------------------------------------------- * This code is part of the RealView Run-Time Library. * Copyright © 2004-2011 KEIL - An ARM Company. All rights reserved. *---------------------------------------------------------------------------*/
#include <RTL.h> #include <rl_usb.h> #include "GLCD.h" #include <LPC17xx.h> #include "KBD.h" #include "stdio.h"
OS_TID t_keyread; /* assigned task id of task: keyread */
__task void keyread (void);
/*---------------------------------------------------------------------------- * Task 1 'init': Initialize *---------------------------------------------------------------------------*/
__task void init (void) { GLCD_Init (); GLCD_Clear (Blue); GLCD_SetBackColor (Blue); GLCD_SetTextColor (White); GLCD_DisplayString (4, 0, 1, " USB HID "); GLCD_DisplayString (5, 0, 1, " DRM Manage "); KBD_Init ();
os_tsk_prio_self(100); usbd_init(); /* USB Device Initialization */ usbd_connect(__TRUE); /* USB Device Connect */ // t_keyread = os_tsk_create (keyread,0); /* start keyread task */
os_tsk_delete_self(); /* Terminate Task */ }
int main (void) {
os_sys_init(init); /* Init RTX and start 'init' */ }
///*---------------------------------------------------------------------------- // * Task 6 'keyread' // *---------------------------------------------------------------------------*/ __task void keyread (void) { uint32_t kbd_val; short AD_value; kbd_val = (LPC_GPIO1->FIOPIN >> 20) & KBD_MASK; while (1) { /* endless loop */
if (KBD_Get () !=0x079) { AD_value = kbd_val; printf ("AD value = 0x%03x\n\r",AD_value); } // os_dly_wait (5); /* wait for timeout: 5 ticks */ } }
|