你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32F429心得\疑问】+STM32F429入门

[复制链接]
MrJiu 提问时间:2014-4-20 18:52 /
     自从看到有stm32f4的活动后,看了好几天的资料,今天就说说我个人入门的一些经验。对于一个新的芯片,我想首先应该考虑的是从哪些开始....换一句话,就是怎么才算正式入门了,为此我说一下我自己的看法。我个人觉得对于一个芯片只有熟悉了时钟系统,GPIO口和定时器(包含中断),才算正式对于这个芯片入门,至于其他的一些可以在需要的使用的时候,可以再去仔细的了解。当然,这里肯定有一个基础的要求了,就是要会使用这个芯片的IDE软件了。为了详细的讲解我个人的看法,我把这篇文章分为3章,第一,学习一个芯片需要哪些东西;第二,stm32f4的时钟系统,GPIO口和定时器的使用;第三,总结。最后在开始前,先ps一下,自从高考后,语文就已经交给语文老师了,请不要过度关注语法和错别字,只要东西讲解清楚就好了
收藏 评论9 发布时间:2014-4-20 18:52

举报

9个回答
MrJiu 回答时间:2014-4-20 18:51:40

RE:【STM32F429心得\疑问+STM32F429入门

       刚接触一个芯片需要哪些资料,从哪里去找这些资料....首先告诉一个真理,目前网络的发展,网络有你想要的一切资源,当然就看你会不会去查找了。最简单的就是从官网上去找资料,英语的对于大家来说,或许有点障碍,但是学好英语还是非常重要的。其次就是需要哪些资料了,芯片的手册肯定是要的,就是对于这个芯片的介绍。那么不同的公司出的芯片资料或许不一样,比如像PIC这些公司,他把芯片介绍和寄存器介绍都在一起,但是有些公司却分开了。不过总的来说就是要有芯片介绍和这个芯片的寄存器介绍了。对于一些需要用到库来开发的,还需要去下载库的手册。
     那么在找这些芯片资料,或许说了在学习芯片的时候,会遇到一些最简单的问题,那就是专业词汇的意思。本来想把这章用来介绍stm32f4里面的一些专业词汇讲解的。但是考虑,专业词汇是在一边学习芯片的时候,才会遇到。那么,我就在讲解过程中在一一提及。
      一个芯片的开始,肯定是编译器的开始,stm32f4有很多,我用的是keil,如何去使用一个没有接触过的软件,百度直接就可以找到....但是一般的软件教程都会有些缺陷,换一句话说就是,只会告诉你如何使用,但是一些芯片的设置,和一些具体东西却没有怎么说。为此,这里可以有一个非常简单的办法,那就是直接到官网下载一个这个芯片的例子,然后打开它的设置,就可以很清楚的看到自己需要设置哪些东西。
      在keil软件里面,很多人都在初次编译的时候,遇到两个问题,就是一个定义和路径的问题。如下图:

上面的图,有两个设置,第一个是定义问题。但是,我刚开始和大家一样,只知道必须这样去设置,但是却不知道为啥。不过任何问题都要了解的非常清楚,才可以好好的开始自己的项目。
USE_STDPERIPH_DRIVER-》这个就是一个定义,那么它有什么用呢,这个是用来使用库文件的,如果需要使用库文件,就需要加这句话,如果不使用,就不需要。如下图:

这句话是包含在stm32f4xx.h头文件里面的,从里面很简单的就知道,定义了这个,就可以使用官方提供的库,否则就没法使用。
STM32F4XX-》这个也是定义,也是从stm32f4xx.h头文件可以找到。不过,貌似有点问题,这个怎么说呢,算是一个选择芯片的型号的吧,就是与自己选择芯片型号有关系的。
第二个设置,很简单了,就是路径的问题,就是你这个项目需要使用的头文件的路径了。比如你需要使用到库、自己定义的头文件等等,那么加入这些库的头文件,就可以了。
    最后,这章算是讲解完了,不知道讲解清楚了没有...总的来说,就是去网上找一切资源。从网络上获取自己需要的资源.....
        
keil.png
QQ截图20140420194849.png
MrJiu 回答时间:2014-4-20 18:51:52

RE:【STM32F429心得\疑问+STM32F429入门

     现在开始,就是芯片的问题,。stm32可以从库开始,也可以从寄存器开始。库比较容易上手,因库把所有的设置都打包了,使用的时候,只需要直接使用就可以了。那么何为库,简单的来说,就是设置寄存器函数。库就是把寄存器的设置打包成函数,使使用者不需要关注寄存器的设置,直接去使用就可以了。
      那么,很多人就说,是从库开始,还是从寄存器开始呢。我是这样子的,从寄存器开始,但是库也不要去不管,比如我需要设置某个东西,我可以把库直接打开,看里面怎么设置的,然后自己去设置,或者说直接使用库。这样可使自己非常了解芯片。不过这就需要非常好的耐心,去看人家写的库,有时候非常难去找自己想要的东西,最简单的一个办法是,如果要找这个函数的实现,可以用keil的搜索这个函数的名字,这样就可以非常容易的找到啦
      最先了解芯片的,肯定要从时钟系统开始,时钟相当于动力,了解它,就可以了解真个过程。由于我的代码都是用寄存器在做,所以我会讲的非常仔细。时钟的大致走向,可以用从寄存器手册上找到,如下图:
 
      从上图一眼就可以看,整个时钟的分布,以及走向,那么在程序在使用的时候,最新开始的就是时钟的设置了。设置过程如下:
1、复位寄存器CR、CFGR和CIR。
2、打开HSE,并等其就绪。
3、设置APB1、2不超过45MHz、90MHz。
4、设置PLL的倍频系数和时钟源。
5、打开PLL,并等PLL锁定。
6、设置PLL为系统时钟。
    在这里,大家会发现,stmf4的时钟与其他系列的stm32有些不一样,因为这里的设置PLL是独立的寄存器RCC-&gtLLCFGR。不过在整个设置过程中大家一定要注意设置APB1和APB2,因为这两个有要求,就是不许超过45M和90M。至于这个过程的实现代码,如果谁需要,大家可以去群里面找我要,我在这里就不拿出来了。因为,我觉得东西尽量自己实现会比较好。当然还有一个原因就是因为我自己写也不知道对不对因为木有板子,虽然在stm32f0上成功了的,不过设置是不一样的,过程我想都应该差不多的吧。
     然后就是定时器了,涉及到定时器,首先肯定是中断和中断的优先级。stm32中断的有很多个,优先级必须要要设置。两个优先级的概念——抢占式优先级和响应优先级,怎么来说这两个优先级呢,两个中断同时来了,首先考虑的是抢占式优先级,谁高处理谁,一样就考虑响应优先级,也是谁高处理谁,如果也一样咋办,就按照优先级的顺序来,这个顺序在寄存器手册上有,当然,在startup_stm32f429_439xx.s文件里面也有。如下图:

     这里面的代码是用汇编写的,从里面可以获取两个信息,除了顺序外,还可以获取每个中断的名字,那么在使用中断函数的时候void XX(void),其中的xx就是用上面直接替代就可以了。
     我使用的time7定时器具体的设置过程如下:
       SCB->AIRCR= 0xFA050000 | 0X400;   //设置分组
       NVIC->IP[55] = 0x80;                             //设置  NVIC->ISER[1] |= (1PSC = 0X0059;                                //89+1->1Mhz
       TIM7->CCR1 |= 1;                                       //Open Cnt
   这个是设置定时器7,每1ms中断一次,时钟的频率是90MHz,注意是定时器时钟,和整个程序的180MHz时钟不一样。这里的定时器时钟也就是APB2的设置,从第一个图也可以看的出来。在这里大家肯定注意到了,SCB、NVIC这两个寄存器,这是ARM手册的,在寄存器手册看不到,可以从M4内核手册上找到这两个寄存器。关于抢占式优先级和响应优先级,就是靠的这两个寄存器设置的。具体的可以百度,因为讲解的话,需要非常多的篇幅了
     最后就是GPIO口了,这个是所有中最简单的一个了,但是STM的芯片比什么51,PIC的GPIO设置都要复杂,因为这里面涉及到输出速度,还有各种IO口的类型,什么模拟输入,浮空输入等等,具体啥,大家百度下,资料讲解非常详细。设置过程如下:
    1、使能GPIO的时钟(RCC)
     2、设置相应的IO为输入还是输出(如果是输出需要设置速度,速度大于50MHZ,需要开启补偿单元SYSCFG),输入输出类型,上拉还是下拉。
      3、最后就是设置复位寄存器,还有输入输出的数据寄存器了。
     到这里,总算是讲解完了,不知道有没有讲明白。
QQ截图20140420201700.png
QQ截图20140420204006.png
MrJiu 回答时间:2014-4-20 18:53:30

RE:【STM32F429心得\疑问+STM32F429入门

    最后,就是总结了,怎么说了,我在整个看资料过程中,看了很多的官方代码,特别是库和stmf4xx头文件,因为从里面不仅仅可以了解官方是怎么设置的,还可以看别人怎么写代码的。上面的时钟设置和GPIO的设置我没有提供代码,如果有谁需要,可以去群里面找我要,还有一个原因是,木有板子,不确定是否正确,虽然在stm32f0上的时候,按照这个过程来是木有错误的。我想stm32f4也应该差不多吧。另外就是,stmf4最大的一个特点,就是有FPU了。可以很容易的减少计算机在计算时的cpu的消耗吧。
    再次,最后说一下,对于一个初次接触的人来说,最好是多使用百度,上面有你想要的一切资料。多看看官方的库,或许有点枯燥,但是总会有些收获的。。。。。。
MrJiu 回答时间:2014-4-20 18:53:42

RE:【STM32F429心得\疑问+STM32F429入门

      如果,上面有啥错误,希望大家提出来啊,我们一起交流交流
MrJiu 回答时间:2014-4-28 23:12:36

RE:【STM32F429心得\疑问】+STM32F429入门

自己顶一下
从善2 回答时间:2014-6-13 11:09:36

回复:【STM32F429心得\疑问】+STM32F429入门

我是一个没什么嵌入式基础的,也没玩过51,单片机,只有1年多软件从业经验,现在公司项目要我研究STM32F429这块板子,主要要做UI设计,请问我需要哪方面的知识,以及该从哪方面切入
MouseCat 回答时间:2015-3-6 11:48:02
谢谢分享收藏下
wamcncn 回答时间:2015-3-6 12:54:11
谢谢分享
chaplin1999-262 回答时间:2015-3-14 10:14:17

谢谢分享
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版