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

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com		 
**																	 
**--------------File Info---------------------------------------------------------------------------------
** File Name:               time_16_PWM_reg.c	    
** Last modified Date:      2007.12.24
** Last Version:            v1.1 
** Description:             Stellaris系列单片机定时器操作	   
** 
**--------------------------------------------------------------------------------------------------------
** Created By:              Ni Likao	  
** Created date:            2007.09.18 
** Version: v1.0            v1.0
** Descriptions:            使用定时器产生一路简单的PWM波形	    
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             Kang qinhua
** Modified date:           2008.01.12
** Version:                 v1.1
** 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_DR2R                 0x00000500                          /*  选择2ma驱动电流             */
#define GPIO_O_ODR                  0x0000050C                          /*  选择Open drain方式	        */	
#define GPIO_O_DIR                  0x00000400                          /*  数据方向寄存器              */
#define GPIO_O_AFSEL                0x00000420                          /*  模式控制寄存器              */
#define GPIO_O_DATA			        0x00000000                          /*  数据寄存器                  */
#define GPIO_PORTD_BASE             0x40007000                          /*  GPIOD口的基地址             */
#define LED1  	                	0x00000010                          /*  定义PD4PWMA输出口           */

/*********************************************************************************************************
** Function name:           main	   
** Descriptions:            该范例程序演示了如何使用定时器的PWM功能。定时器装载值设为3000,匹配值设为2000,
**                          采用LED灯作为PWM输出,如果用户改变定时器的装载值或匹配值都会改变PWM的占空比而
**                          导致LED灯亮度变化。
** input parameters:        无
** output parameters:       无      
** Returned value:          无	 
** Created By:              Ni Likao 倪力考
** Created date:            2007.09.18
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:                     
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main (void)
{
    unsigned char i;
    HWREG(SYSCTL_RCGC1) |= SYSCTL_PERIPH_TIMER0 & 0x0fffffff;           /*  使能定时器0外设             */
    HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOD & 0x0fffffff;            /*  使能GPIOD口外设             */
    for (i = 10; i > 0; i--) {
        ;
    }
    
    /*
     *  设置连接PD4为输出   
     */  
    HWREG(GPIO_PORTD_BASE + GPIO_O_DIR) &= ~( LED1);                    /*  PD4为输出口                 */
    HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) |= LED1;                      /*  PD4为PWMA输出               */
    HWREG(GPIO_PORTD_BASE + GPIO_O_DR2R) |= LED1;                       /*  PD4的驱动电流为2mA          */ 
    HWREG(GPIO_PORTD_BASE + GPIO_O_ODR) |= LED1;                        /*  设置PB0为PULL_PUSH模式      */                                                
    
    /*
     *  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_TAILR) = 3000;                          /*  设置定时器匹配初值为3000    */
    HWREG(TIMER0_BASE + TIMER_O_TAMATCHR) = 1500;                       /*  设置定时器匹配值为1500      */
    HWREG(TIMER0_BASE + TIMER_O_CTL) |= (TIMER_A & TIMER_CTL_TAEN);     /*  使能定时器0                 */ 
    while (1) {
        ;
    }																		   
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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