这似乎是一个简单的问题,但我不能弄清楚这一点。
我使用以下代码将 GIP 端口2和 pin5设为高电平:
GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN5);
GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN5);
但是、当我通过 Osciloscope 读取该引脚时、它显示为零。 我不知道这背后的原因是什么。 我还为 LED 分配了不同的值、它起作用了。 但是、我无法为 GPIO 分配任何值。
下面是我的完整代码:
#include
#include
#include /* printf */
#include /* clock_t、clock、clocks_per_sec */
#include /* sqrt */
//#include
unsigned int adc_value=0、adc_value2=0;
volatile unsigned int ADCvar;
int main (空)
{
GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN1);
GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN5);
//禁用看门狗
WDTCTL = WDTPW | WDTHOLD;
//启用对端口寄存器的更改
PM5CTL0 &=~LOCKLPM5;
P1SEL1 |= BIT3; //为 ADC 配置 P1.3
P1SEL0 |= BIT3;
P1SEL1 |= BIT4; //为 ADC 配置 P1.4
P1SEL0 |= BIT4;
//配置 ADC12
ADC12CTL0 = ADC12ON | ADC12SHT0_2; //打开 ADC12、设置采样时间
ADC12CTL1 = ADC12SHP; //使用采样计时器
ADC12MCTL0 = ADC12VRSEL_4; // VR+= VeREF+(外部)和 VR-=AVss
ADC12CTL0 |= ADC12ENC; //启用转换
while (1)
{
ADC12CTL0 |= ADC12SC; //开始转换软件触发
// while (!(ADC12IFGR0 & BIT3);
ADCvar = ADC12MEM0; //读取转换结果
// GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
// if (ADCvar<4500){
GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN5);
GPIO_setOutputHighOnPin (GPIO_PORT_P1、GPIO_PIN0);
GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN1);
/* for (i=100000;i>0; i--);
for (i=100000;i>0; i--);*/
// __no_operation(); //在此处设置断点
//}
}
}
感谢您的任何帮助。
此致、
Abolfazl