【led】djyos下基于tq2440开发板上跑马灯实验
//这是事件发生,将要调用的服务函数 { ? ? uint32_t led=0x22222111; ? ? void *my_para; ? ? while(1) ? ? { ? ? ? ? my_para = djy_get_event_para(); ? ? ? ? if(*(u32*)my_para ==1) ? ? ? ? { ? ? ? ? ? ? pg_gpio_reg->GPBDAT |= (led & 0x1e0); ? ? ? ? ? ? pg_gpio_reg->GPBDAT &= (led | 0xfe1f); ? ? ? ? ? ? led <<=1; ? ? ? ? ? ? if((led&0xf) == 0) ? ? ? ? ? ? ? ? led += 1; ? ? ? ? }else ? ? ? ? { ? ? ? ? ? ? pg_gpio_reg->GPBDAT &= 0xfe1f; ? ? ? ? } ? ? ? ? //执行本句后,事件将被阻塞,由于被同步的事件类型就是本事件的事件类型, ? ? ? ? //所以同步条件就是:再次发生本类型事件。 ? ? ? ? //参数 ‘1’表示只要发生一次事件就可以了 ? ? ? ? //参数500表示如果一直不发生,500mS后结束等待 ? ? ? ? //关于事件类型弹出同步,参见《都江堰操作系统与嵌入式系统设计》的第5.3节 ? ? ? ? djy_evtt_pop_sync(djy_my_evtt_id(),1,500*mS); ? ? } }
//本应命名为main的,但调试器总是默认这是整个程序的入口点,罢了 void djy_main(void) { ? ? uint16_t evtt_flash_led; ? ? uint32_t reg; ? ? u32 parameter;
? ? //对GPIO口配置 ? ? reg = pg_gpio_reg->GPBCON; ? ? reg &= 0xfffc03ff; ? ? reg |= 0x00015400; ? ? pg_gpio_reg->GPBCON = reg; ? ? ?//PB5~8 set to output for led ? ? reg = pg_gpio_reg->GPBUP; ? ? reg |= 0x1e0; ? ? pg_gpio_reg->GPBUP ?= reg; ? ? // The pull up function is disabled ? ? //注册跑马灯事件 ? ? evtt_flash_led = djy_evtt_regist(true,cn_prio_RRS, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? flash_led,10,NULL); ? ? parameter = 1; ? ? djy_event_pop(evtt_flash_led,false,NULL,¶meter, ? ? ? ? ? ? ? ? ? ? sizeof(parameter),0); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |