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

查看: 2678|回复: 9

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

[复制链接]

3

主题

999

回帖

363

蝴蝶豆

版主

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

使用道具 举报

3

主题

999

回帖

363

蝴蝶豆

版主

最后登录
2020-11-26
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

3

主题

999

回帖

363

蝴蝶豆

版主

最后登录
2020-11-26
 楼主| 发表于 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-&gt;AIRCR= 0xFA050000 | 0X400;   //设置分组
       NVIC-&gt;IP[55] = 0x80;                             //设置  NVIC-&gt;ISER[1] |= (1PSC = 0X0059;                                //89+1-&gt;1Mhz
       TIM7-&gt;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
回复 支持 反对

使用道具 举报

3

主题

999

回帖

363

蝴蝶豆

版主

最后登录
2020-11-26
 楼主| 发表于 2014-4-20 18:53:30 | 显示全部楼层

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

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

使用道具 举报

3

主题

999

回帖

363

蝴蝶豆

版主

最后登录
2020-11-26
 楼主| 发表于 2014-4-20 18:53:42 | 显示全部楼层

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

      如果,上面有啥错误,希望大家提出来啊,我们一起交流交流
回复 支持 反对

使用道具 举报

3

主题

999

回帖

363

蝴蝶豆

版主

最后登录
2020-11-26
 楼主| 发表于 2014-4-28 23:12:36 | 显示全部楼层

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

自己顶一下
回复 支持 反对

使用道具 举报

0

主题

4

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-6-13 11:09:36 | 显示全部楼层

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

我是一个没什么嵌入式基础的,也没玩过51,单片机,只有1年多软件从业经验,现在公司项目要我研究STM32F429这块板子,主要要做UI设计,请问我需要哪方面的知识,以及该从哪方面切入
回复 支持 反对

使用道具 举报

56

主题

970

回帖

2

蝴蝶豆

金牌会员

最后登录
2020-9-21
发表于 2015-3-6 11:48:02 | 显示全部楼层
谢谢分享收藏下
回复 支持 反对

使用道具 举报

93

主题

2449

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-6-28
发表于 2015-3-6 12:54:11 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

1

主题

124

回帖

2

蝴蝶豆

金牌会员

最后登录
2020-11-13
发表于 2015-3-14 10:14:17 | 显示全部楼层

谢谢分享
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版