智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1210|回复: 1
打印 上一主题 下一主题

MCF52259芯片程序求解。。。。

[复制链接]

5

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
241
贡献
137
兑换币
139
注册时间
2014-11-13
在线时间
42 小时
毕业学校
未毕业
跳转到指定楼层
1#
发表于 2014-12-4 22:01:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "led.h"
#include "pit.h"
int main(void)
{
        int counter = 0;
        uint8 i=0;
       
#if (CONSOLE_IO_SUPPORT || ENABLE_UART_SUPPORT)
        printf("Hello World in C from MCF52259 derivative on MCF52259 board\n\r");
        fflush(stdout);
#endif
        led_init();
        pit_init(0);
        for(;;) {          
                   counter++;
                  switch(i)
                  {
                          case 0:
                          led_on(1);
                          delay_s(80000,0,1);
                          i++;
                        break;
                       
                          case 1:
                          led_on(2);
                          delay_s(80000,0,1);
                        i++;
                        break;
                       
                          case 2:
                          led_on(3);
                          delay_s(80000,0,1);
                          i++;
                          break;
                         
                          case 3:
                          led_on(4);
                          delay_s(80000,0,1);
                          i++;
                          break;
                         
                          case 4:
                          led_off(4);
                          delay_s(80000,0,1);
                        i++;
                        break;
                       
                          case 5:
                          led_off(3);
                          delay_s(80000,0,1);
                          i++;
                          break;
                         
                          case 6:
                          led_off(2);
                          delay_s(80000,0,1);
                          i++;
                          break;
                         
                          case 7:
                          led_off(1);
                          delay_s(80000,0,1);
                          i=0;
                          break;
                         
                          default:
                          break;
                         
                  }
        }
}
这是主函数。。。。下面是主函数中调用的函数

void stop_pit(uint8 channel)
{
        MCF_PIT_PCSR(channel)&=~MCF_PIT_PCSR_EN;       
}


void delay_s(uint32 sysClkKhz,uint8 channel, uint8 s)
{
        MCF_PIT_PMR(channel)=1000*s*sysClkKhz/2/16384-5;
        start_pit(channel);
        while(        (MCF_PIT_PCSR(channel)&MCF_PIT_PCSR_PIF)==0);
        MCF_PIT_PCSR(channel)|=MCF_PIT_PCSR_PIF;
        stop_pit(channel);
}


这个调用函数我将 MCF_PIT_PMR(channel)=1000*s*sysClkKhz/2/16384-5; 这一行的1000去掉,怎么LED灯亮的时间间隔不变,而且我注释掉 MCF_PIT_PCSR(channel)|=MCF_PIT_PCSR_PIF;  stop_pit(channel);这两行,对程序没什么影响。。。求解。。。新手第一次发帖求助。。。。

回复

使用道具 举报

6

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2415
威望
1247
贡献
770
兑换币
781
注册时间
2012-10-27
在线时间
199 小时
2#
发表于 2015-1-2 21:09:48 | 只看该作者
本帖最后由 donllen 于 2015-1-2 21:12 编辑

还是先弄明白这几个寄存器的作用 PMR是你想要累加到几 (原谅我不会表达),PCNTR累加到PMR会清零重新开始,PCSR是分频控制位 中断标志位寄存器。你注释掉的代码那个PCSR寄存器设置我想可能在你的 pit_init函数中已经有了定义。 至于其他的问题 明白寄存器的意思就很容易理解了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 17:11 , Processed in 0.046385 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表