⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer_pwm_reg.c

📁 EasyARM615的KEIL下的调试程序,包含IO口,串口,SPI口等
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: time_16_PWM_reg.c
** Last modified Date: 2007-04-25 
** Last Version: v1.0
** Description: Stellaris系列单片机定时器操作
** 
**------------------------------------------------------------------------------------------------------
** Created By: Pan Yi Fei
** Created date: 2007-04-25 
** Version: v1.0
** Descriptions: 使用定时器产生一路简单的PWM波形
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#define HWREG(x)		(*((volatile unsigned long *)(x)))

#define SYSCTL_PERIPH_TIMER0    	0x10010000  // Timer 0 在系统控制器中的地址
#define SYSCTL_RCGC1            	0x400fe104  // 运行-模式时钟门控控制1
#define SYSCTL_RCGC2            	0x400fe108  // 运行-模式时钟门控控制12
#define SYSCTL_PERIPH_GPIOD	    	0x20000008  // GPIO D 在系统控制器中的地址

#define TIMER0_BASE            	 	0x40030000  // Timer0的基地址
#define TIMER_O_CFG             	0x00000000  // GPTM配置寄存器
#define TIMER_O_TAMR            	0x00000004  // TimerA 模式寄存器
#define TIMER_O_CTL             	0x0000000C  // GPTM控制寄存器
#define TIMER_O_TAILR           	0x00000028  // TimerA 间隔装载寄存器
#define TIMER_O_TAMATCHR       		0x00000030  // TimerA 匹配寄存器

#define TIMER_CFG_16_BIT_PAIR   	0x04000000  // 两个16位定时器
#define TIMER_CTL_TAEN          	0x00000001  // TimerA 使能
#define TIMER_CFG_A_PWM         	0x0000000A  // Timer A PWM 输出
#define TIMER_A                 	0x000000ff   // Timer A

#define GPIO_O_DIR					0x00000400  // 数据方向寄存器
#define GPIO_O_AFSEL				0x00000420  // 模式控制寄存器
#define GPIO_O_DATA					0x00000000  // 数据寄存器
#define GPIO_PORTD_BASE				0x40007000  // GPIO D 口的基地址
#define LED1  	                	0x00000010  // 定义PD4为PWMA输出口

/*使能全局中断*/
__asm void  CPUcpsie(void)
{
	  CPSIE   I
	  BX LR
}

int main(void)
{
  HWREG(SYSCTL_RCGC1) |= SYSCTL_PERIPH_TIMER0 & 0x0fffffff;	//使能定时器0外设	
  HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOD & 0x0fffffff;	//使能GPIO D口外设
  CPUcpsie();												// 使能全局中断 
  // 设置连接PD4为输出
  HWREG(GPIO_PORTD_BASE + GPIO_O_DIR) &= ~( LED1);		//PD4为输出口
  HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) |= LED1;		//PD4为PWMA输出
  //Timer0中断配置	  
  HWREG(TIMER0_BASE + TIMER_O_CTL) &= ~(TIMER_CTL_TAEN);	//禁止定时器
  HWREG(TIMER0_BASE + TIMER_O_CFG) |= TIMER_CFG_16_BIT_PAIR>>24;   //GPTM配置为:16位定时器配置
  							
  HWREG(TIMER0_BASE + TIMER_O_TAMR) |= TIMER_CFG_A_PWM & 255; 	//设置为PWM模式
  //HWREG(TIMER0_BASE + TIMER_O_CTL) |= 1<<6;	//设置为PWM输出翻转(打开可选择为翻转)
  HWREG(TIMER0_BASE + TIMER_O_TAILR) = 3000;            //设置定时器匹配初值为3000 
  HWREG(TIMER0_BASE + TIMER_O_TAMATCHR) = 1000;		//设置定时器匹配值为1000
  HWREG(TIMER0_BASE + TIMER_O_CTL) |= (TIMER_A & TIMER_CTL_TAEN); // 使能定时器0
  while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -