搜索
bottom↓
回复: 10

高手看看这个代码哪里不对了?

[复制链接]

出0入0汤圆

发表于 2013-6-10 10:19:27 | 显示全部楼层 |阅读模式
#include <LPC17xx.H>
uint32_t msTicks,sign = 0;


void sysTick_Handler(void)
{
        msTicks++;
        if(msTicks == 30)
        {
                sign = 1;
                msTicks = 0;
        }
}

int main(void)
{
        uint32_t SystemCoreClock = 0;
        uint32_t i = 29;
//        SystemInit();
        if(SysTick_Config(SystemCoreClock / 1000))
        {
                while(1);
        }
        LPC_PINCON->PINSEL1 |= 0xc3ffffff;
        LPC_GPIO0->FIODIR |= 0x60000000;
//        LPC_GPIO0->FIOSET3 |= 0x60;
        while(1)
        {
                if(sign == 1)
                {
                        sign = 0;
                        LPC_GPIO0->FIOPIN |= -(1<<i);
                        i++;
                        if(i == 30);
                        i=0;
                }
        }

}

出20入70汤圆

发表于 2013-6-10 11:16:40 | 显示全部楼层
stm32开发平台,V3.0的库?为什么把SystemInit()注释掉了?

出0入0汤圆

发表于 2013-6-10 11:51:02 | 显示全部楼层
看着像流水灯的程序!~

出0入0汤圆

发表于 2013-6-10 12:16:02 | 显示全部楼层
if(i == 30);
这个有啥意义?是不是没有分号

出0入0汤圆

发表于 2013-6-10 12:18:50 | 显示全部楼层
//        SystemInit();
        if(SysTick_Config(SystemCoreClock / 1000))
        {
                while(1);
        }


改成


        SystemInit();
        SysTick_Config(SystemCoreClock / 1000);

出0入0汤圆

发表于 2013-6-10 12:22:05 | 显示全部楼层

if(i == 30);
这个有啥意义?是不是没有分号


还有msTicks没有赋初值

还有uint32_t SystemCoreClock = 0;
应该是引用extern uint32_t SystemCoreClock;
并不是定义

出0入0汤圆

 楼主| 发表于 2013-6-11 11:15:15 | 显示全部楼层
techbaby 发表于 2013-6-10 11:16
stm32开发平台,V3.0的库?为什么把SystemInit()注释掉了?

因为进行单步调试,进入他就死掉了

出0入0汤圆

 楼主| 发表于 2013-6-11 11:16:05 | 显示全部楼层
孩子莫悲伤 发表于 2013-6-10 11:51
看着像流水灯的程序!~

是的,我想要达到的效果

出0入0汤圆

 楼主| 发表于 2013-6-11 11:27:24 | 显示全部楼层
techbaby 发表于 2013-6-10 11:16
stm32开发平台,V3.0的库?为什么把SystemInit()注释掉了?

17XX的库

出0入0汤圆

 楼主| 发表于 2013-6-11 11:43:55 | 显示全部楼层
#include <LPC17xx.H>
uint32_t msTicks = 0,sign = 0;


void sysTick_Handler(void)
{
        msTicks ++;
        if(msTicks == 300)
        {
                sign = 1;
                msTicks = 0;
        }
}

int main(void)
{
        extern uint32_t SystemCoreClock;
        uint32_t i = 29;
        SystemInit();
        if(SysTick_Config(SystemCoreClock / 1000))
        {
                while(1);
        }
        LPC_PINCON->PINSEL1 |= 0xc3ffffff;
        LPC_GPIO0->FIODIR |= 0x60000000;
//        LPC_GPIO0->FIOSET3 |= 0x60;
        while(1)
        {
                if(sign == 1)
                {
                        sign = 0;
                        LPC_GPIO0->FIOPIN |= -(1<<i);
                        i++;
                        if(i == 30)
                        i=0;
                }
        }

}

出0入0汤圆

 楼主| 发表于 2013-6-11 11:45:22 | 显示全部楼层
单步走
一旦进入        SystemInit();
走到  LPC_SC->CCLKCFG   = CCLKCFG_Val;      /* Setup Clock Divider                */  
到这一步
J-LINK 都搞死了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 00:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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