利用DM642的定时器0通过查询方式控制GPIO口

本文介绍了一个使用定时器0实现对GPIO口3、4、5进行脉冲信号输出的程序实例。该程序通过查询方式控制定时器的计数,并据此改变GPIO的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://cchome.blog.sohu.com/88997267.html

/********************main.c********************/
//本程序利用定时器0的计数功能通过查询的方式控制GPIO口3,4,5输出脉冲
//*****************************************
#include <csl.h>
#include <csl_timer.h>
#include <csl_gpio.h>


#define PRDValue0 0x000F70E0


TIMER_Config MyConfig0=
{
 0x00000205,//CTL
 PRDValue0,//PRD
 0x00000000,//CNT
};


void main()
{
 GPIO_Handle hGpio;
 TIMER_Handle hTimer0;
 
 Uint32 PinID = GPIO_PIN3 | GPIO_PIN4 | GPIO_PIN5;
 Uint32 flag0 = 0, cnt0; 
 //初始化CSL
 CSL_init();
 
 //打开定时器0,1及GPIO口
 hTimer0 = TIMER_open(TIMER_DEV0, 0);
 hGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
 
 //对定时器0,1及GPIO口进行配置
 TIMER_config(hTimer0, &MyConfig0);
 GPIO_pinEnable(hGpio,PinID);
 GPIO_pinDirection(hGpio,PinID,GPIO_OUTPUT);
 
 //开始运行
 TIMER_start(hTimer0);

 
 for(;;)
 {
  cnt0 = TIMER_getCount(hTimer0);
 
  //定时器0的频率
  if(cnt0==PRDValue0 &&flag0==0)
  { 
   GPIO_pinWrite(hGpio,GPIO_PIN3,0);
      GPIO_pinWrite(hGpio,GPIO_PIN4,0);
      GPIO_pinWrite(hGpio,GPIO_PIN5,0);
      flag0=1;
     }
     else if(cnt0==PRDValue0 &&flag0==1)
     {
   GPIO_pinWrite(hGpio,GPIO_PIN3,1);
      GPIO_pinWrite(hGpio,GPIO_PIN4,1);
      GPIO_pinWrite(hGpio,GPIO_PIN5,1);
      flag0=0;
     } 
    
    }
 
 TIMER_close(hTimer0);
 GPIO_close(hGpio);
}

//本程序只需要一个CMD文件就可以了,具体可参考前一篇文章写出的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值