int main()
{
u8 i=0;
u8 key;
int dac_value=0;
u16 dacval;
float dac_vol;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(9600);
KEY_Init();
DAC1_Init();
while(1)
{
key=KEY_Scan(0);
if(key==KEY_UP)
{
dac_value+=400;
if(dac_value>=4000)
{
dac_value=4095;
}
DAC_SetChannel1Data(DAC_Align_12b_R,dac_value);
}
else if(key==KEY_DOWN)
{
dac_value-=400;
if(dac_value<=0)
{
dac_value=0;
}
DAC_SetChannel1Data(DAC_Align_12b_R,dac_value);
}
i++;
if(i%20==0)
{
led1=!led1;
}
if(i%50==0)
{
dacval=DAC_GetDataOutputValue(DAC_Channel_1);
dac_vol=(float)dacval*(3.3/4096);
printf("输出DAC电压值为:%.2fV
",dac_vol);
}
delay_ms(10);
}
}
真的让人搞不懂这段程序,为什么它只在 主函数大循环里面才能正常运行,为什么独自给它建立一个函数然后再调用,它运行就不正常了,按了一次按键马上到最大值或最小的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>