OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3422|回复: 2

stm32f103zet6战舰板,流水灯循环次数不对

[复制链接]

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
发表于 2017-2-20 10:39:11 | 显示全部楼层 |阅读模式
2金钱
原子哥,前几天在你这里买的板子,战舰的f103zet6,一切正常,我自己写了一个流水灯测试程序,用for循环跑了5次流水灯,在线调试的时候循环正常,可是程序下载到板子里,重新上电,流水灯循环了14次,不知道为什么会这样?这是我的主要代码,求帮忙看看,谢谢。


[mw_shl_code=c,true]
void LED_INIT(void) {
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE, ENABLE);

        //GPIO Structure && GPIO init
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                                                //PB5
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                //Set Frequency 50MHz       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                //íÆíìêä3ö£o¼′í¨óÃIO¿úêä3öÄ£ê½
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        //GPIO Structure & GPIO init
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                                                //PE5
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                //Set Frequency 50MHz       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                //íÆíìêä3ö£o¼′í¨óÃIO¿úêä3öÄ£ê½
        GPIO_Init(GPIOE, &GPIO_InitStructure);
}



void LED_off_on(void){
                int temp = 0;

                LED_INIT();

                for (temp=0; temp<5; temp++) {
                                GPIO_SetBits(GPIOB, GPIO_Pin_5);
                                GPIO_ResetBits(GPIOE, GPIO_Pin_5);
                                mydelay_ms(500);
                               
                                GPIO_ResetBits(GPIOB, GPIO_Pin_5);
                                GPIO_SetBits(GPIOE, GPIO_Pin_5);       
                                mydelay_ms(500);
                }

                GPIO_SetBits(GPIOB, GPIO_Pin_5);
                GPIO_SetBits(GPIOE, GPIO_Pin_5);       
}[/mw_shl_code]
[mw_shl_code=c,true]int main(void)
{
        SystemInit();
       
        LED_off_on();       
}[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

可能的原因:因为你在流水灯跑完后没有将程序停在那里(比如在 LED_off_on( );后面加个while(1);),所以MCU后面的运行就不确定了,有的单片机就会从头再来运行一遍;你可以在后面加上while(1);,看看是不是变成5遍了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
618
金钱
618
注册时间
2015-11-20
在线时间
89 小时
发表于 2017-2-20 10:39:12 | 显示全部楼层
可能的原因:因为你在流水灯跑完后没有将程序停在那里(比如在 LED_off_on( );后面加个while(1);),所以MCU后面的运行就不确定了,有的单片机就会从头再来运行一遍;你可以在后面加上while(1);,看看是不是变成5遍了。
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2017-2-23 14:42:25 | 显示全部楼层
gsndragon 发表于 2017-2-21 10:34
可能的原因:因为你在流水灯跑完后没有将程序停在那里(比如在 LED_off_on( );后面加个while(1);),所以M ...

今天准备试试你的方法,结果程序重新下载到板子,莫名奇妙的好了,~~~还没试呢~~~
不管怎么样,谢谢你哈~~~
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 13:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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