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

📄 analog_comparators_in_reg.c

📁 EasyARM615的KEIL下的调试程序,包含IO口,串口,SPI口等
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: Analog_Comparators_in.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: 从PB4输入一路模拟信号,模拟比较器使用内部参考电压 1.1V,比较的结果在 PD7 
**           	上输出,PD7 连接到 LED1以便观察实验现象。同时读取比较寄存器的结果,
**				从PB0输出显示.
**
**------------------------------------------------------------------------------------------------------
** Modified by:    MA LIANG
** Modified date:  2007/07/15
** Version:
** Description:
**
********************************************************************************************************/

#define HWREG(x)				(*((volatile unsigned long *)(x)))
#define SYSCTL_RCGC1            0x400fe104  // 运行模式时钟门控寄存器1
#define SYSCTL_RCGC2			0x400fe108  // 运行模式时钟门控寄存器2
#define SYSCTL_PERIPH_GPIOB		0x20000002  // GPIO B 在系统控制器中的地址
#define SYSCTL_PERIPH_GPIOC     0x20000004  // GPIO C
#define SYSCTL_PERIPH_GPIOD     0x20000008  // GPIO D
#define SYSCTL_PERIPH_COMP0     0x11000000  // 模拟比较器 0 在系统控制器中的地址
#define GPIO_PORTB_BASE			0x40005000  // GPIO B 口的基地址
#define GPIO_PORTC_BASE         0x40006000  // GPIO Port C
#define GPIO_PORTD_BASE         0x40007000  // GPIO Port D
#define GPIO_O_DIR				0x00000400  // GPIO 数据方向寄存器
#define GPIO_O_AFSEL			0x00000420  // GPIO 模式控制寄存器
#define GPIO_O_DATA				0x00000000  // GPIO 数据寄存器		
#define COMP_O_ACSTAT0          0x00000020  // Comp0 状态寄存器

#define COMP_BASE               0x4003C000  // 模拟比较器的基地址
#define COMP_O_ACCTL0           0x00000024  // 模拟比较器0的控制寄存器
#define COMP_TRIG_NONE          0x00000000  // 配置模拟比较器无ADC触发
#define COMP_ASRCP_REF          0x00000400  // 配置模拟比较器使用内部参考电压源
#define COMP_OUTPUT_NORMAL      0x00000100  // 配置模拟比较器正常输出
#define COMP_O_REFCTL           0x00000010  // 模拟比较器0的参考电压控制寄存器
#define COMP_REF_1_1V           0x00000308  // 配置模拟比较器的内部电压参考源为1.1V
#define COMP_ACSTAT_OVAL        0x00000002  // Comparator 输出值

#define PB4 					(1<<4)				// PB4为VIN-
#define PC5 					(1<<5)				// PC5连接LED2
#define PD7 					(1<<7)				// PD7为VOUT

//-----------------------------------------------------------------------------
// 函数原形:int main(void)
// 功能描述:主函数
// 参数说明:无
// 返回值:0
//-----------------------------------------------------------------------------
int main(void)
{
  // 使能GPIO PB口
  HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOB & 0x0fffffff;
  // 使能GPIO PC口
  HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOC & 0x0fffffff;
  // 使能GPIO PD口
  HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOD & 0x0fffffff;
  // 使能模拟比较器0
  HWREG(SYSCTL_RCGC1) |= SYSCTL_PERIPH_COMP0 & 0x0fffffff;
  

  // 设置 PB4 和 PD7 为外设控制
  HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) |= PB4 ;
  HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) |= PD7 ;
  // 设置 PC5 为输出
  HWREG(GPIO_PORTC_BASE + GPIO_O_DIR) |= PC5;
  
  // 配置模拟比较器
  HWREG(COMP_BASE + COMP_O_ACCTL0) = (COMP_TRIG_NONE | COMP_ASRCP_REF | COMP_OUTPUT_NORMAL);
  // 配置模拟比较器的内部参考电压为 1.1V 。
  HWREG(COMP_BASE + COMP_O_REFCTL) = COMP_REF_1_1V;

  while (1)
  {
    if(HWREG(COMP_BASE + COMP_O_ACSTAT0) & COMP_ACSTAT_OVAL)//根据比较寄存器的状态显示LED
		HWREG(GPIO_PORTC_BASE + (GPIO_O_DATA + (PC5 << 2))) = 0;
	else
		HWREG(GPIO_PORTC_BASE + (GPIO_O_DATA + (PC5 << 2))) = PC5;
  }

}

⌨️ 快捷键说明

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