亲爱的原子哥、我今天在研究DAC的实验时候、发现了一个BUG,程序中我并没有假如按键的程序、、我使用调试组件串口调试的、、当我输入800(1000以下的数据),LCD的显示都为零、、
您的程序如下:
[mw_shl_code=c,true]void Dac1_Set_Vol(u16 vol)
{
float temp=vol;
temp/=1000;
temp=temp*4096/3.3;
DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12?????????????????è??DAC??
}[/mw_shl_code]
我就觉得很奇怪、、然后研究这段代码、、结果发现您这个 temp/ =1000,
当temp的值小于1000时,最终的temp是为0的、、这个c语言的小小陷阱、、
后来我改了一下:
[mw_shl_code=c,true]void Set_Dac1(u16 vol)
{
float temp = (float)vol ;
temp = temp/1000;
temp = temp *4096/3.3;//12bit = 0~4095
/* Set DAC Channel1 DHR12L register */
DAC_SetChannel1Data(DAC_Align_12b_R, temp);
}[/mw_shl_code]
把它强制转化为float型就行了、、、LCD显示的数据经计算器计算、、完全正确、、请原子哥明鉴、、、 |