OpenEdv-开源电子网

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

憋不住了,被逼开通3G上网来请教大家---初学者一大堆问题

[复制链接]

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
发表于 2012-2-5 20:30:01 | 显示全部楼层 |阅读模式


首先感谢原子出的这款高性价比的板子,我只是一个从51刚过来的初学者,一个人学习STM32,有时候遇到问题长时间不能解决(因为不方便上网来论坛),真的很打击信心。 这两两天忍痛花了几百块办了无线上网,不过能上论坛就让我看到了希望,呵呵,希望各位前辈不吝赐教啊,下面是问题

 

1 同样一个程序(基于库),原先是软件仿真正常,但是硬件仿真会死循环在main函数之前的一段汇编代码里面,今天重装系统后在编译一下发现两者都正常了。

 

2有时候一进入仿真,MDK便自己跳到了汇编窗口,是什么原因?

 

3 以下是stm32f10x.h里面的一段代码,建立工程的时候不是已经确定了芯片的类型了吗?这代码干什么用的,又是怎样起作用的。

#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD)
/* #define STM32F10X_LD */ /*!< STM32 Low density devices */
#define STM32F10X_MD /*!< STM32 Medium density devices */
/* #define STM32F10X_HD */ /*!< STM32 High density devices */
#endif

 

4 以下也是stm32f10x.h里面的一段代码,这代码起神马作用?有必要吗

#define HSE_Value ((uint32_t)8000000)
#define HSI_Value ((uint32_t)8000000)
#define HSEStartUp_TimeOut ((uint16_t)0x0500)

5 其实库里面还有好多的这样的问题,看不懂我觉得心里没底

6 什么时候要像下面那样加上两个下划线,这样啥用意?

#ifndef __STM32F10x_H
#define __STM32F10x_H

7 我知道STM32要先执行启动代码在执行main函数,但是MDK怎么知道启动代码在哪儿,或者说MDK是按怎样的规则找到启动代码的,是不是只要在工程里面加入了启动代码,无论project workspace怎样组织,MDK自己都能找到它。

8 这个问题需要贴图,但是图片贴不上来(确定按钮无效)

9论坛帖子好乱,建议帖子更细的分类,   当然这得耗费原子哥很多时间,不过不然的话,以后帖子就越来越乱了,就不能很好的发挥论坛的作用
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-5 22:08:25 | 显示全部楼层
回复【楼主位】trusture:
---------------------------------
1,具体死在哪里?
2,这种一般是程序崩溃了.或者你直接调出了汇编窗口在查看.
3,你的代码不全吧?应该是:
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL)
  /* #define STM32F10X_LD */   /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_MD */   /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_HD */   /*!< STM32F10X_HD: STM32 High density devices */
  #define STM32F10X_CL   /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
这段话就是说没有任何定义的时候,定义一个CL类型的器件,也就是设定默认值的作用.
4,这个还真没用到过.
5,所以我不用库.呵呵.
6,下划线“__”属于编程风格的内容,对程序没有影响。不用下划线也可以,用几个下划线也由个人习惯。
7,复位其实也是一个中断,复位之后执行的函数就属于你说的启动代码部分了.在.s文件里面,复位中断的服务函数如下:
; Reset handler routine
Reset_Handler   ROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  __main

                LDR     R0, = SystemInit_ExtMemCtl ; initialize external memory controller
                BLX     R0

                LDR     R1, = __initial_sp        ; restore original stack pointer
                MSR     MSP, R1                   

                LDR     R0, =__main
                BX      R0
                ENDP
可以看出,复位就是执行Reset_Handler 的内容,在最后调用main函数,就开始跑你写的代码了.
8,贴图很简单啊,再摸索下吧.
9,你说的乱,怎么个说法?能具体点么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-5 22:24:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
1 现在没那个问题了,不知道当时死在那儿了

3暂时不管了,虽然还是不懂
4 呵呵
5 难道我也得要放弃库吗,好像用库的不多啊,呜呜
6 印证了我自己的想法
7
8
9应该把精华帖子集中起来,如果是提问的问题,可以按照是那个外设的问题来分类
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-5 22:28:22 | 显示全部楼层



回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-5 22:34:30 | 显示全部楼层

 


回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-5 22:37:16 | 显示全部楼层

   贴图还要设置图片大小啊,这也太落后了吧, 呵呵

如上图,我想问以下MDK 里面的工程组织,文件之间是什么关系啊(这个问题我自己都觉得不好表达)

回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2012-2-5 22:40:06 | 显示全部楼层
回复【楼主位】trusture:
---------------------------------
4,这些都是代表地址,比如说HSE_Value 代表32位的地址,地址为0X80000000,至于这个地址的作用是什么,LZ可以查询STM32使用手册。
9.精华贴已经是整理过的,LZ只要点击菜单的“精华贴”就可以了。
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-5 22:44:35 | 显示全部楼层
贴图还要设置图片大小啊,这也太落后了吧, 呵呵

如上图,我想问以下MDK 里面的工程组织,文件之间是什么关系啊(这个问题我自己都觉得不好表达)
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-5 23:43:22 | 显示全部楼层

回复【7楼】螃蟹爱虫:
---------------------------------
请教个问题:我的电脑出现对文件及文件夹的拖放操作无效的问题,具体来说就是,比如用鼠标拖动一个文件(复制,移动,或者拖进某个文件夹),都不行(只要一放开鼠标左键,就跟什么都没有发生过一样);开机的时候还会出现任务栏点击无效,跟假死一样,这时候Ctrl+Alt+Del调出任务管理器后,假死问题就解决了,但是文件拖动无效问题依旧。
百度以下发现也有我这样的,不过问题都没有解决
更气人的是,我重新安装了系统,问题依旧
用360安全卫士,360杀毒,360急救箱,金山毒霸都没有发现问题
我现在已经绝望了。。。。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2011-11-9
在线时间
0 小时
发表于 2012-2-5 23:57:06 | 显示全部楼层
楼主很有专研精神啊,建议先看看C语言的书,很多是C的基础知识。
3. 这是一个预处理,预处理都由 # 开始,在编译之前完成,你可以在文件内 #define xxx, 代表你定义了 xxx变量,你也可以在makefile 内 define 这个变量。#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD)
代表如果你没有定义这些变量,以下的代码会被编译,反之,编译器不会编译以下代码,就像注释掉了一样。建议你多看看C语言的书。
4, 就是简单的定义一些常量,#define HSE_Value ((uint32_t)8000000) 在预编译的时候,HSE_Value 在预编译的时候都会被((uint32_t)8000000) 替代。
5. 建议使用st的driver(不喜欢叫他库,一般意义上的库是看不到源码的)。一开始不要纠结于库是怎么实现的。
7 CM3 的地址从 0x00000000开始存放一些中断向量,0x00000004存放的是reset rlease 后的第一条指令,具体他是怎么映射到 flash address or system memory, 请参考 stm32的规格书,memory map 一章。
www.armrunc.com
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2011-11-9
在线时间
0 小时
发表于 2012-2-6 00:01:45 | 显示全部楼层
memory map, 是在链接时候完成的,可以看看 scatter file 和 .map 文件。
www.armrunc.com
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-6 00:12:18 | 显示全部楼层
回复【9楼】trusture:
---------------------------------
系统中毒了吧?
有的毒重装系统也无用的,因为它潜伏在其他盘,就算你格式化C盘,也是徒劳,只要点击任意一个有潜伏的盘,就会重新入侵你的电脑.
最好重装之前,先看看是什么毒,然后网上找一下针对性的办法.比较靠谱.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2012-2-6 08:45:58 | 显示全部楼层
回复【9楼】trusture:
---------------------------------
  你這個情況我還真沒遇到過,有可能是中病毒原因。也有可能360優化一些本不該動的東西吧,據說360經常會優化出問題。 可以用卡巴斯基殺一下。
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-6 09:07:04 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
我重装后刚一开机,就去试着拖动桌面的图标(此时还未对打开过其他盘),发现问题依旧啊
我想问一下,重装系统时,C盘会被先格式化再装入系统吧!格式化之后再N的病毒也死掉了吧?
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-6 09:23:10 | 显示全部楼层
回复【10楼】armrunc:
---------------------------------
谢谢你的回复:你是从语法角度来说的,这个我还是基本懂的,呵呵,  我想问的是它为什么要加上这段代码,对最终代码有什么影响,谢谢
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
 楼主| 发表于 2012-2-6 09:42:10 | 显示全部楼层
回复【11楼】armrunc:
---------------------------------
我觉得我还需要了解MDK是怎样编译的,请问有相关参考资料么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-6 10:07:56 | 显示全部楼层
回复【14楼】trusture:
---------------------------------
那就不是了,病毒可以潜伏在其他盘,除非你把硬盘给格了.否则还是会感染.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-6 10:08:16 | 显示全部楼层
回复【16楼】trusture:
---------------------------------
MDK有help的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2011-11-9
在线时间
0 小时
发表于 2012-2-6 11:45:02 | 显示全部楼层
回复【16楼】trusture:

---------------------------------
如果你使用 CodeSourcery 编译,你将了解更多,前提是你了解 gcc, makefile, MDK 只是一个 IDE,学习它你永远不会了解 ARM IMAGE 具体是怎么生成的。我一些同事拒绝使用 windows,因为你按键以后,后台做什么,你几乎永远都可能不知道。一开始,没有必要了解这么多,细枝末节先抛开,慢慢你就懂了。
www.armrunc.com
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
发表于 2012-2-7 14:56:30 | 显示全部楼层
4 以下也是stm32f10x.h里面的一段代码,这代码起神马作用?有必要吗

#define HSE_Value ((uint32_t)8000000) 
#define HSI_Value ((uint32_t)8000000)
#define HSEStartUp_TimeOut ((uint16_t)0x0500)

前两个是设置外部高速时钟、内部高速时钟频率的,第三个是设置外部高速时钟的启动超时的,如果超时了,可以判定外部高速时钟失效。
http://item.taobao.com/item.htm?id=8251860556
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 20:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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