打印
[资料分享与下载]

以YL-KL26Z为平台研制数字电路实验平台(3)

[复制链接]
625|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
C洛达尔多|  楼主 | 2015-10-25 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当然,为了便于调整频率,最好是添加数码显示功能。至于手动脉冲功能,可通过GPIO中的键入程序来改造,每按一次键就产生一个由高到底的电平跳变。
此外,用示例程序Demo_LETMR_Interrupt也可以改造成,方法是用mkl_lptmr.c中的LPTMR0_CMR作为脉冲频率的调整变量。
void  lptmrInit (void)
{
    SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;       /*打开lptmr时钟    */
    LPTMR0_CSR |= LPTMR_CSR_TCF_MASK | LPTMR_CSR_TIE_MASK;               /* 清除标志位 开启中断        */
    LPTMR0_PSR |= LPTMR_PSR_PCS(1);             /* 使用1KHz时钟源 */
    LPTMR0_CMR = n;                              /* 默认2分频 n=500即为1s */
    LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;         /* 开启LPTMR     */
}

n=500时,输出频率=1KHz时钟源/2分频*500=1hz
n=5000时,输出频率=0.1 hz;
n=5时,输出频率=100 hz
5.译码器功能,它是视输入的情况,按照已规定好的对应关系来确定输出对应值。
以3-8译码器74HC138为例,它有3个输入端ABC8个输出端Y0~Y7

相关帖子

沙发
C洛达尔多|  楼主 | 2015-10-25 20:50 | 只看该作者
其程序结构如下:
void ledSet()
{
INT8U ucMode;
    // 令Y0~Y7皆为“1”;
    // ucMode=C*4+B*2+A;
    switch(ucMode) {
        case 0: {
           //  令Y0=0;
            break;
        }
        case 1: {
            //  令Y1=0;
            break;
        }
        case 2: {
            //  令Y2=0;
            break;
        }
        case 3: {
            //  令Y3=0;
            break;
        }
        case 4: {
            //  令Y4=0;
            break;
        }
        case 5: {
            //  令Y5=0;
            break;
        }
        case 6: {
            //  令Y6=0;
            break;
        }
        case 7: {
            //  令Y7=0;
            break;
        }
    }
}

使用特权

评论回复
板凳
C洛达尔多|  楼主 | 2015-10-25 20:52 | 只看该作者
由于开发板上不能直接提供3个按键和8个LED指示灯来模拟完成该实验,故这里只给出一个程序的结构以供参考。
6.计数器与频率计的实现,由于示例程序中侧重于定时功能,没涉及脉冲计数,所以需要参考其它资料编写,相关内容如下:
u16 LPT_Ctr;    // 用于存储脉冲数
int main(void)
{
        // 开启脉冲计数
        LPTM_Init();  // LPTM初始化 使用通道2
        // 开启PIT中断
        PIT_Init(1000);  // 开启一个1000MS中断 用于脉冲计数
        while(1)
  {
        // 显示LPT_Ctr 的计数值   
        }
}
//函数名:LPTM_Init
//功  能:LPTM模块初始化
//说  明:channel  计数端口号LPTM_CH2,PORTC5
//         计数范围为0~65535
void LPTM_Init()
{
//开启模块时钟
SIM->SCGC5|=SIM_SCGC5_PORTC_MASK;            //开启port口的模块时钟
PORTC->PCR[5]&=~(PORT_PCR_MUX_MASK);
PORTC->PCR[5]|=PORT_PCR_MUX(4);                 //配置io口为LPTM通道
PORTC->PCR[5]|=PORT_PCR_PE_MASK;
PORTC->PCR[5]&=~(PORT_PCR_PS_MASK);           //下拉电阻配置   
SIM->SCGC5|=SIM_SCGC5_LPTIMER_MASK;                 //开启LPTM模块时钟
LPTMR0->CSR|=LPTMR_CSR_TPS(Ch);                //选择输入通道
LPTMR0->CSR&=~LPTMR_CSR_TPP_MASK;           //设置上升沿触发计数
LPTMR0->CSR|=LPTMR_CSR_TFC_MASK;             //设置在自由运行模式下
LPTMR0->CSR|=LPTMR_CSR_TMS_MASK;                       // 设置为计数模式
LPTMR0->PSR|=LPTMR_PSR_PBYP_MASK;            // 忽略分频及滤波         LPTMR0->CSR|=LPTMR_CSR_TEN_MASK;             // 开启模块
}
//函数名:LPTM_Counter
//功  能:LPTM模块计数器的计数值获取
//说  明: 返回值为十六位的计数值
u16 LPTM_Counter(void)
{
        u16 ch;
        ch=(LPTMR0->CNR);                               //读取计数器的计数值
        LPTMR0->CSR&=~(LPTMR_CSR_TEN_MASK);       //关闭模块
        LPTMR0->CSR|=LPTMR_CSR_TEN_MASK;                         //开启模块,计数器清零
        return(ch);
}
// 函数名:PIT_Init
// time   设置定时器的时间,单位ms
void PIT_Init(u32 time)
{         
        GetProcessorInfo();  //计算系统时钟
        time=time*(PInfo.BusClock/1000);
        //开始定时器配置
        SIM->SCGC6|=SIM_SCGC6_PIT_MASK;      //开启pit模块时钟
        PIT->MCR&=~PIT_MCR_MDIS_MASK;       //开启pit模块
        PIT->MCR|=PIT_MCR_FRZ_MASK;          //开启pit模块
        PIT->CHANNEL[pit].LDVAL=(uint32_t)time;   //设置延时时间
    NVIC_EnableIRQ(PIT0_IRQn);break;     //开启内核接受中断
        PIT->CHANNEL[pit].T标志寄存器|=PIT_T标志寄存器_TIF_MASK;  //清除标志位
        PIT->CHANNEL[pit].TCTRL|=(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//开启定时器及中断
}
//函数名:PIT0_IRQHandler
//功  能:PIT中断通道0
void PIT0_IRQHandler(void)
{
        PIT->CHANNEL[0].T标志寄存器|=PIT_T标志寄存器_TIF_MASK;//清标志位
        LPT_Ctr=LPTM_Counter();
}

使用特权

评论回复
地板
C洛达尔多|  楼主 | 2015-10-25 20:53 | 只看该作者
计数器与频率计的主要区别就是一个有计数时间的限制,而另一个却不用。当计数脉冲为单位时基脉冲时,通过进制处理就可形成计时器。
7.串行通讯,在YL-KL26Z开发板上是以虚拟串口的方式由USB口来实现串行通讯的。借助串行通讯可在一定情况下替代数码显示缺失的不足,它是一种重要的程序调试和观察手段。此外,串行通讯也是连接上、下位机的桥梁,有了它就为自动测评提供了基础,通过读取下位机的实验数据就可分析出实验的成绩,为输出成绩报告予以有力的支持。
当然该实验平台的功能不仅局限于此,因为YL-KL26Z开发板的模拟信号处理能力还没有很好的使用,发挥16位ADC和12位DAC的作用,则可以将实验平台的功能延伸到模拟电路实验,从而形成一个综合型的实验平台。
当然YL-KL26Z开发板的潜力还很强大,还需近一步向前探索,以实现多媒体化的操作平台。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

236

帖子

0

粉丝