打印

我都 迷糊了 求解答

[复制链接]
2991|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 arm菜鸟人 于 2012-4-13 20:02 编辑


迷迷糊糊的也快一年了。之前也将ARM了解了个大概。到现在一看,还是感觉什么都不会。算是钻研问题和学习总结吧。


因为自己还没有真正的
写一个完整的程序并下载到MCU上。一直在看寄存器。也很少调试开发板。(务实还是很重要啊,感觉很多问题,不知道怎么问,也不知道怎么解决)


现在要开始编程。但是对其整体的流程没信心。之前将开发板的例程用KEIL编译过下载到ARM上运行过。1、知道选芯片;2、添加启动代码;3、然后就是写程序。(这个3就不好细说了,很迷惑。)因为师兄之前做的一个项目,走了一个流程。他也调好了。成功的经验应该可以复制。但是,我感觉我的表达欠缺。很多地方还是不理解。


现在将它表述一下,希望大家能给点指示。

通过现在的认知,我感觉开始的一步阻止了我的前行。就是说,如果单单的让我配置一个GPIO或者USART什么的。我很好理解。特别是STM带有固件库的就更好配置了。也许,我不懂的就是这个"运行环境"的问题了。

像有些就#include "stm32f10x_lib.h"。里面好像包含了很多头文件和源文件。大概看了一下,好像这些就是固件库函数的源文件吧?(不知是否说错!懂的可以解释一下。)里面有两个文件夹:inc & src 。是不是#include "stm32f10x_lib.h"一下,就搭建好了我的编程环境呢?之后只需要按照系统需求配置调用ARM外部资源?

那么这个#include "stm32f10x_lib.h 是不是包含了所有固件库的资源。这样include一下,就不需要操心“环境”问题了,以后直接配置GPIOADC什么的就可以了。但是,很多用不到的需不需要添加到lib里面呢?这个lib怎样制作,制作的时候需要注意些什么呢?

还有就是编写中断处理函数的时候,好像是一个stm32f10x_it.hstm32f10x_it.c。是不是中断处理函数的函数名都是确定的?有多少stm32f10x_**的文件呢?他们的功能又是怎样的?

之前好像一直只注重于RCC_Configuration()\NVIC_Configuration()等一些函数的编写,而不清楚之前的一些步骤。有点空中楼阁的感觉。

都不知道该怎么表述了。有点糊。

还有一点,如果用的LPC系列这个环境又怎么配置呢?


问题也许很弱智,但是是真的迷糊,求解答。
沙发
arm菜鸟人|  楼主 | 2012-4-13 11:32 | 只看该作者
本帖最后由 arm菜鸟人 于 2012-4-13 20:02 编辑

这是 mini板上面的文件拓扑图。

使用特权

评论回复
板凳
mohanwei| | 2012-4-13 11:36 | 只看该作者
点流水灯吧……

使用特权

评论回复
地板
王紫豪| | 2012-4-13 11:40 | 只看该作者
我感觉系统库把你搞晕了;直接操作寄存器也成啊;这样虽然繁琐但是更好理解。

使用特权

评论回复
5
logokfu| | 2012-4-13 12:20 | 只看该作者
呵呵,ST给大家提供固件库本来是想让大家开发更方便,没想到却成了新手们的绊脚石。

总结一下:
第一,是由于大家有的英语不过关,看到readme之类的文档就隔过懒得看,其实这些文档恰恰是帮助大家理顺脉络的文档。如果把自带的说明文档都看一边就会好多了,前期看着可能慢些,会浪费点时间,等你看了一遍之后就会发现有规律基本都是千篇一律。记住这个文档一定得看。

第二,固件库无非就是把寄存器封装到结构体中。然后用函数的方法给寄存器赋值而已。表面是用函数,实际最后还是操作的寄存器。


最后说下,不要被固件库给搞迷糊了,自己花些时间,好好看看目录结构。做大心中有数。

另外我想问问楼主,现在会自己独立建立工程吗(当然不是用官方的模板,而是自己建立,并且要对每个目录和文件做到知道为什么要添加他们)。如果自己连个工程都不会独立建的话那还是先学学建立工程吧。

使用特权

评论回复
评分
参与人数 3威望 +4 收起 理由
raxfeer + 1
arm菜鸟人 + 1
香水城 + 2 基本常识。
6
arm菜鸟人|  楼主 | 2012-4-13 13:57 | 只看该作者
5# **kfu 如果是STM32系列的能够建立工程。只是被各种模板搞得有点糊涂。

还有就是没有固件库的怎么怎么建立呢?怎样将C与其对应的CPU对接呢?像LPC系列的。我感觉还是自己对整个过程不是很清楚。然后一开始就弄的STM的,而将这个过程屏蔽了。使得信息丢失。

使用特权

评论回复
7
arm菜鸟人|  楼主 | 2012-4-13 14:02 | 只看该作者
直接写 寄存器 C上面怎样认这些 寄存器?也就是怎样将 每一款芯片的寄存器映射为C上面的名字?比如LPC1700系列的芯片,我要在上面写个程序,那些寄存器的名字 直接可以用吗?

使用特权

评论回复
8
arm菜鸟人|  楼主 | 2012-4-13 14:04 | 只看该作者
顺便问一下,怎样给分呀?不结帖,提前给分。结帖时再给分。

使用特权

评论回复
9
arm菜鸟人|  楼主 | 2012-4-13 14:13 | 只看该作者
郁闷,怎么给分呀!:Q

使用特权

评论回复
10
logokfu| | 2012-4-13 14:48 | 只看该作者
#include "stm32f10x_lib.h"
这句就好比是当初用51单片机开头的那个#include "reg51.h"
这个头文件还是要调用的。你打开这个头文件你就会发现和51的头文件也是类似的(这个需要自己花些时间看看每个文件里的内容,大致看下有个印象就行),就是对寄存器地址定义了一下。然后我们就可以向51那样直接给寄存器赋值了。

结贴才能给分的,不结贴不能给分。结贴不结贴、给分不给分这个都不会影响21IC的热心人回答问题的,当然楼主能给点更好:lol

使用特权

评论回复
11
logokfu| | 2012-4-13 15:06 | 只看该作者
本帖最后由 **kfu 于 2012-4-13 15:07 编辑
还有就是编写中断处理函数的时候,好像是一个stm32f10x_it.h、stm32f10x_it.c。是不是中断处理函数的函数名都是确定的?有多少stm32f10x_**的文件呢?他们的功能又是怎样的? arm菜鸟人 发表于 2012-4-13 11:28


楼主,从你说的这段话就说明你之前从来就没有认真研究过固件库的结构。

我再针对你的问题回答下:

第一:中断函数的名当然是确定的,为什么这样说呢,你看图:




所有的中断函数名都在启动文件里面定义着呢。至于有的人可能想改下中断函数的名字我想应该先把启动文件里面的中断函数名先改下吧(启动文件里的中断函数名我还没有改过,不知道能不能改,不过我觉得应该能改,你可以试试)。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
arm菜鸟人 + 1
12
hechnology| | 2012-4-13 15:36 | 只看该作者
中断函数名可以改,只是一个label而已,只要保证在中断向量表中的地址不变即可

使用特权

评论回复
13
arm菜鸟人|  楼主 | 2012-4-13 18:33 | 只看该作者
10# **kfu
谢谢你们的回复,与解答。
真的不知道怎么给分。
我点击“我要结帖”没有那个给分的框。我再点“结帖给分”,提示给分不符。我往下看,只有第一个非自己的有个给分框,其余的没有。怎么给分呀?

不过,对于这个问题,我还是每彻底弄懂。对于STM的我还是比较清楚,因为有固件库。知道其寄存器和地址的对应。
但是 别的还是不太会。
像非stm32芯片的“#include ”怎么加呢。“#include lpc17xx_lib.h”?
唉,到学成了空中楼阁。情何以堪。解决C与芯片对接问题。

使用特权

评论回复
14
arm菜鸟人|  楼主 | 2012-4-13 18:45 | 只看该作者
本帖最后由 arm菜鸟人 于 2012-4-16 20:50 编辑

真不知道怎么给分。截图为证:

使用特权

评论回复
15
logokfu| | 2012-4-13 19:10 | 只看该作者
填分数的那个框是需要手动填的

使用特权

评论回复
16
arm菜鸟人|  楼主 | 2012-4-13 20:04 | 只看该作者
本帖最后由 arm菜鸟人 于 2012-4-13 20:05 编辑

15# **kfu

除了3楼有给分框,其余楼没有。

使用特权

评论回复
17
arm菜鸟人|  楼主 | 2012-4-13 21:00 | 只看该作者
还是给不了分!!!
我真的这么笨啊:Q:Q
怎么就是不见给分框呢!!

使用特权

评论回复
18
nongfuxu| | 2012-4-14 04:44 | 只看该作者
:lol
先点击结贴,然后才会出现给分框!

使用特权

评论回复
19
ahgao| | 2012-4-14 09:15 | 只看该作者
楼主的问题和是不是ARM,是不是STM32关系不大。我觉得你可能好好的啃啃C语言以及了解一下C以及汇编调用会有很大的帮助。

使用特权

评论回复
20
xuwenb| | 2012-4-14 10:35 | 只看该作者
:(我一点都不懂,咋办?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

539

帖子

1

粉丝