加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【led】djyos下基于tq2440开发板上跑马灯实验

发布时间:2020-12-15 06:46:36 所属栏目:百科 来源:网络整理
导读://这是事件发生,将要调用的服务函数 void flash_led(void) { ? ? uint32_t led=0x22222111; ? ? void *my_para; ? ? while(1) ? ? { ? ? ? ? my_para = djy_get_event_para(); ? ? ? ? if(*(u32*)my_para ==1) ? ? ? ? { ? ? ? ? ? ? pg_gpio_reg-GPBDAT |=

//这是事件发生,将要调用的服务函数
void flash_led(void)

{

? ? 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;
? //弹出跑马灯事件,开辟线程,调用服务函数flash_led

? ? djy_event_pop(evtt_flash_led,false,NULL,&parameter,

? ? ? ? ? ? ? ? ? ? sizeof(parameter),0);

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读