今天写的不顺畅,一个AD写了八个小时,然后一个温度传感器又卡了四个小时,哎,没人能一马平川,特别是搞技术,我们的目的不是走马观花式的学习,而是真正了解寄存器的操作,不要怕时间不够,就怕时间花了还吃不透,反而透露着阿Q精神安慰自己,我们不要这样。
来来来,直接进入比较器的学习。
现在来说比较器的操作了:
现在来看下具体的寄存器,只有几个,我们耐心看下吧:
首先是控制寄存器
直接写程序了
InitComp1Gpio();
EALLOW;
SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK=1;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
AdcRegs.ADCCTL1.bit.ADCPWDN = 1;
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;
Comp1Regs.COMPCTL.bit.COMPDACEN=1;
Comp1Regs.COMPCTL.bit.QUALSEL = 0;
Comp1Regs.COMPCTL.bit.SYNCSEL = 0;
Comp1Regs.COMPCTL.bit.COMPSOURCE = 1;
EDIS;
while(1);
终于写完了,好困,准备洗洗睡了,明天见
早上我用PROTEUS仿真了昨晚的程序,死活不行,妹的,然后直接下载到我的实验板里面,把COMP1OUT直接连到一个LED上面,发现程序是正常的,哎,又被仿真软件搞了一个小时,上面的程序是对的,大家可以使用,不过我那是两路都是模拟输入。
我刚刚又去写了下DAC控制的模拟输入方式,也很简单,直接给大家程序吧,效果图跟上面是一样的
InitComp1Gpio();
EALLOW;
SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK=1;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
AdcRegs.ADCCTL1.bit.ADCPWDN = 1;
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;
AdcRegs.ADCCTL1.bit.VREFLOCONV=1;
Comp1Regs.COMPCTL.bit.COMPDACEN=1;
Comp1Regs.COMPCTL.bit.QUALSEL = 0;
Comp1Regs.COMPCTL.bit.SYNCSEL = 0;
Comp1Regs.COMPCTL.bit.COMPSOURCE = 0;
Comp1Regs.DACVAL.bit.DACVAL=500;
EDIS;
while(1);
菜鸟交流qq群107691092
联系客服