完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先感谢原子出的这款高性价比的板子,我只是一个从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论坛帖子好乱,建议帖子更细的分类, 当然这得耗费原子哥很多时间,不过不然的话,以后帖子就越来越乱了,就不能很好的发挥论坛的作用 |
|
相关推荐
19个回答
|
|
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,你说的乱,怎么个说法?能具体点么? |
|
|
|
1 现在没那个问题了,不知道当时死在那儿了
2 3暂时不管了,虽然还是不懂 4 呵呵 5 难道我也得要放弃库吗,好像用库的不多啊,呜呜 6 印证了我自己的想法 7 8 9应该把精华帖子集中起来,如果是提问的问题,可以按照是那个外设的问题来分类 |
|
|
|
|
|
|
|
|
|
|
|
4,这些都是代表地址,比如说HSE_Value 代表32位的地址,地址为0X80000000,至于这个地址的作用是什么,LZ可以查询STM32使用手册。
9.精华贴已经是整理过的,LZ只要点击菜单的“精华贴”就可以了。 |
|
|
|
|
|
|
|
请教个问题:我的电脑出现对文件及文件夹的拖放操作无效的问题,具体来说就是,比如用鼠标拖动一个文件(复制,移动,或者拖进某个文件夹),都不行(只要一放开鼠标左键,就跟什么都没有发生过一样);开机的时候还会出现任务栏点击无效,跟假死一样,这时候Ctrl+Alt+Del调出任务管理器后,假死问题就解决了,但是文件拖动无效问题依旧。
百度以下发现也有我这样的,不过问题都没有解决 更气人的是,我重新安装了系统,问题依旧 用360安全卫士,360杀毒,360急救箱,金山毒霸都没有发现问题 我现在已经绝望了。。。。 |
|
|
|
楼主很有专研精神啊,建议先看看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 一章。 |
|
|
|
memory map, 是在链接时候完成的,可以看看 scatter file 和 .map 文件。
|
|
|
|
系统中毒了吧?
有的毒重装系统也无用的,因为它潜伏在其他盘,就算你格式化C盘,也是徒劳,只要点击任意一个有潜伏的盘,就会重新入侵你的电脑. 最好重装之前,先看看是什么毒,然后网上找一下针对性的办法.比较靠谱. |
|
|
|
你這個情況我還真沒遇到過,有可能是中病毒原因。也有可能360優化一些本不該動的東西吧,據說360經常會優化出問題。 可以用卡巴斯基殺一下。
|
|
|
|
我重装后刚一开机,就去试着拖动桌面的图标(此时还未对打开过其他盘),发现问题依旧啊
我想问一下,重装系统时,C盘会被先格式化再装入系统吧!格式化之后再N的病毒也死掉了吧? |
|
|
|
谢谢你的回复:你是从语法角度来说的,这个我还是基本懂的,呵呵, 我想问的是它为什么要加上这段代码,对最终代码有什么影响,谢谢
|
|
|
|
我觉得我还需要了解MDK是怎样编译的,请问有相关参考资料么
|
|
|
|
那就不是了,病毒可以潜伏在其他盘,除非你把硬盘给格了.否则还是会感染.
|
|
|
|
MDK有help的.
|
|
|
|
如果你使用 CodeSourcery 编译,你将了解更多,前提是你了解 gcc, makefile, MDK 只是一个 IDE,学习它你永远不会了解 ARM IMAGE 具体是怎么生成的。我一些同事拒绝使用 windows,因为你按键以后,后台做什么,你几乎永远都可能不知道。一开始,没有必要了解这么多,细枝末节先抛开,慢慢你就懂了。
|
|
|
|
4 以下也是stm32f10x.h里面的一段代码,这代码起神马作用?有必要吗
#define HSE_Value ((uint32_t)8000000) #define HSI_Value ((uint32_t)8000000) #define HSEStartUp_TimeOut ((uint16_t)0x0500) 前两个是设置外部高速时钟、内部高速时钟频率的,第三个是设置外部高速时钟的启动超时的,如果超时了,可以判定外部高速时钟失效。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:39 , Processed in 1.287432 second(s), Total 112, Slave 95 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号