📄 iar-
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name: Analog_Comparators_out_reg.c
** Last modified Date: 2007-09-20
** Last Version: v1.0
** Description: Stellaris系列单片机模拟比较器的操作
**
**--------------------------------------------------------------------------------------------------------
** Created By: Zhou Hai Xin
** Created date: 2007-09-20
** Version: v1.0
** Descriptions: 使用两个电位器分别从PB4、PB6脚输入一路模拟信号,进行比较,
** 比较的结果通过PB5连接到LED4显示,
** 同时读取比较器输出值送到LED5进行显示
**
**--------------------------------------------------------------------------------------------------------
** Modified by: Kang qinhua
** Modified date: 2008.01.13
** Version: v1.1
** Description:
**
*********************************************************************************************************/
#define HWREG(x) (*((volatile unsigned long *)(x)))
#define SYSCTL_RCGC1 0x400fe104 /* 运行模式时钟门控寄存器1 */
#define SYSCTL_RCGC2 0x400fe108 /* 运行模式时钟门控寄存器2 */
#define SYSCTL_PERIPH_GPIOA 0x20000001 /* GPIO B 在系统控制器中的地址 */
#define SYSCTL_PERIPH_GPIOB 0x20000002 /* GPIO B 在系统控制器中的地址 */
#define SYSCTL_PERIPH_COMP0 0x11000000 /* 模拟比较器 0 在系统控制器中的
地址 */
#define GPIO_PORTA_BASE 0x40004000 /* GPIO B 口的基地址 */
#define GPIO_PORTB_BASE 0x40005000 /* GPIO B 口的基地址 */
#define GPIO_O_DIR 0x00000400 /* GPIO 数据方向寄存器 */
#define GPIO_O_AFSEL 0x00000420 /* GPIO 模式控制寄存器 */
#define GPIO_O_DATA 0x00000000 /* GPIO 数据寄存器 */
#define GPIO_O_DR4R 0x00000504 /* 4mA驱动选择 */
#define GPIO_O_DEN 0x0000051C /* 数字输入使能 */
#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_ASRCP_PIN0 0x00000200 /* Comp0+ pin */
#define COMP_ASRCP_PIN 0x00000000 /* Dedicated Comp+ pin */
#define COMP_ACSTAT_OVAL 0x00000002 /* Comparator 输出值 */
#define PA4 (1<<4) /* PA4为LED5 */
#define PB4 (1<<4) /* PB4为VIN- */
#define PB6 (1<<6) /* PB6连接VIN+ */
#define PB5 (1<<5) /* PB5为VOUT */
/*********************************************************************************************************
** 函数原形:int main(void)
** 功能描述:通过外部VIN1与VIN2电压进行比较,通过比较的结果来控制LED3和LED4的状态
LED5将显示比较结果:亮:VIN+ < VIN-;灭:VIN+ > VIN-。
LED4将显示比较结果:亮:VIN+ > VIN-;灭:VIN+ < VIN-。
** 参数说明:无
** 返回值: 0
*********************************************************************************************************/
int main(void)
{
HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOA & 0x0fffffff; /* 使能GPIO PA口 */
HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOB & 0x0fffffff; /* 使能GPIO PB口 */
HWREG(SYSCTL_RCGC1) |= SYSCTL_PERIPH_COMP0 & 0x0fffffff; /* 使能模拟比较器0 */
HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) |= PB4 | PB6 ; /* 设置 PB4 和 PB6 为外设控制 */
HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) |= PB5 ; /* 设置 PF4 为外设控制 */
HWREG(GPIO_PORTA_BASE + GPIO_O_DIR) |= PA4; /* 设置 PA4 为输出 */
/*设置为4mA驱动 */
HWREG(GPIO_PORTA_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTA_BASE + GPIO_O_DR4R) | PA4);
/*设置为推挽管脚 */
HWREG(GPIO_PORTA_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTA_BASE + GPIO_O_DEN) | PA4);
/*设置为4mA驱动 */
HWREG(GPIO_PORTB_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTB_BASE + GPIO_O_DR4R) | PB5);
/*设置为推挽管脚 */
HWREG(GPIO_PORTB_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTB_BASE + GPIO_O_DEN) | PB5);
/* 配置模拟比较器 */
HWREG(COMP_BASE + COMP_O_ACCTL0) = (COMP_TRIG_NONE | COMP_ASRCP_PIN0 | COMP_OUTPUT_NORMAL);
while (1) {
if(HWREG(COMP_BASE + COMP_O_ACSTAT0) & COMP_ACSTAT_OVAL) { /* 根据比较寄存器的状态显示LED5*/
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (PA4 << 2))) = 0;
} else {
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (PA4 << 2))) = PA4;
}
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -