OpenEdv-开源电子网

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

跑马灯实验居然遇到问题

[复制链接]

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2011-5-12
在线时间
3 小时
发表于 2011-5-14 00:53:45 | 显示全部楼层 |阅读模式
    今天看到《不完全手册》,可以与寄存器对应起来学习,感觉很不错,照着手册一步步学习应该是个不错的方法,所以开始了第一个实验-——跑马灯!
    另外,我的实验板不是原子的,因为昨天才看到Openedv,恨啊!不过想想也好,不至于完全照搬手册上的代码了,得根据板子对代码修修改改,学习效果岂不是更佳。
    就这么开始了,跑马灯,本以为按照手册的步骤一步步做不会有什么问题的,无非就是改一下端口设置呗,很快,完成了,软件仿真,OK,波形出来了,正确,立马下载到实验板,问题来了,等了半天,实验板上几只LED愣是没什么反映。重新编译、仿真,波形是正确的哦,再下载,还是没反应!!!回过头再看程序,也看不出有什么问题,折腾了好一会,想了个办法,因为前几天看过STM32固件库函数的使用方法,用库函数做过一些实验。所以就把程序分成系统时钟配置、IO端口配置、端口时钟使能三部分,分别用对应的库函数来取代。这方法还不错,当我把系统时钟配置函数 Stm32_Clock_Init() 用 库函数 RCC_Configuration()  取代编译下载到实验板后,三只LED闪起来了,随后又把其他库函数部分还原成手册上的代码,依然没有问题,所以我认为是Stm32_Clock_Init() 函数有问题,所以开始对照RCC_Configuration()函数和STM32F10XXXS使用手册检查Stm32_Clock_Init()内的代码,看到现在,还是没看出什么问题,或者我还有那一点没有考虑到,暂时也没有头绪了,所以发帖附上源程序寻求高手指点!
主函数如下(和例程几乎没什么区别,是用的PB[15:8]口接的LED):
int main(void)
{
     Stm32_Clock_Init(9);//系统时钟设置
    //RCC_Configuration();
     delay_init(72); //延时初始化
    LED_Init();//初始化与LED连接的接口
    while(1)
     {
         LED0=1;
         LED1=1;
         LED2=1;
         delay_ms(300);
         LED0=0;
         LED1=0;
         LED2=0;
         delay_ms(300);
        }
} 将Stm32_Clock_Init()函数用库函数 RCC_Configuration()替换后,下载到实验板运行又是正常的!





手册学习实践.rar

755.72 KB, 下载次数: 586

想…要壮志凌云,干…要脚踏实地!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-5-14 01:32:46 | 显示全部楼层
回复【楼主位】chzfmx:
-------------------------------
Stm32_Clock_Init(9);//系统时钟设置 
用这个函数是不会有问题的,应该STM32都是兼容的.

如果这里有问题,只有一个可能:你的外部晶振没工作!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-5-14 01:35:44 | 显示全部楼层
回复【楼主位】chzfmx:
-------------------------------
我刚刚仿真了一下你的代码,没发现问题.(用Stm32_Clock_Init(9);//)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2011-5-12
在线时间
3 小时
 楼主| 发表于 2011-5-14 11:57:45 | 显示全部楼层
    谢谢原子了,我终于找到问题了,但还不知道什么原因。
    首先,对于外部晶振没有工作的可能,我排除了,因为用库函数实验板就正常工作的哦。
    然后我也排除了代码错误的可能。我把你的程序和RCC_Configuration()的每一步设置都对照着看了,完全一样,但就是不工作,我怀疑是我看的时候有遗漏的部分,干脆就直接把Stm32_Clock_Init()里的代码用RCC_Configuration()里的代码完全替换了,相当于给RCC_Configuration()换了个函数名,心想这样总归可以了吧,可程序下载之后还是老样子,没反应,这样一来,这就确定你的代码绝对没有问题了。这时候发现,相当于有两个代码功能完全相同的函数,一个能正常运行,另一个一个不能,而他们唯一的区别就是一个和Main()函数在同一个文件(跑马灯.c)里,他是可以正常运行的;另一个是在文件(sys.c)里,他不能正常运行。这时差不多已经找出了问题,我把所有函数都恢复到刚开始时的代码,然后把sys.c文件里的MY_NVIC_SetVectorTable()、MYRCC_DeInit()和Stm32_Clock_Init()三个函数全都COPY到 文件(跑马灯.c)里,编译下载,实验板运行正常。很奇怪,因为 延时函数、LED初始化函数也都在其他文件里,是没有问题的呀,不解!
想…要壮志凌云,干…要脚踏实地!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-5-14 13:05:42 | 显示全部楼层
回复【4楼】chzfmx:
-------------------------------
因为那些都和系统时钟和程序启动关系不大。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2011-5-12
在线时间
3 小时
 楼主| 发表于 2011-5-14 15:21:35 | 显示全部楼层
回复【5楼】正点原子:
-------------------------------
那么我在做后面的实验时,每次都必须把那些与系统时钟、程序启动相关的函数拷到主函数所在的C文件里吗,有没有办法不这么做呢?
想…要壮志凌云,干…要脚踏实地!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-5-14 15:47:57 | 显示全部楼层
回复【6楼】chzfmx:
-------------------------------
不需要的。只要你添加了SYS.C就可以了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2011-5-12
在线时间
3 小时
 楼主| 发表于 2011-5-14 16:20:04 | 显示全部楼层
回复【7楼】正点原子:
-------------------------------
谢谢原子哥!!!现在又莫名其妙的好了,把那些函数放回SYS.C文件里面再编译下载,运行也没问题了,真邪门,故意折腾人的哇,看来老天将降大任于我呀,磨练我的意志在,呵呵
想…要壮志凌云,干…要脚踏实地!
回复 支持 反对

使用道具 举报

21

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2013-8-22
在线时间
1 小时
发表于 2014-5-13 23:40:43 | 显示全部楼层
回复【8楼】chzfmx:
---------------------------------
我刚才测试了你的 RCC_Configuration(void)函数 可以用的啊
爱我所爱!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 03:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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