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

STM32F030 Nucleo64开发板测评之:点亮你的LED

[复制链接]
黑夜之狼 发布时间:2016-11-21 10:05
本帖最后由 黑夜之狼 于 2016-11-21 10:05 编辑 9 D3 W) \8 c9 @$ J% Y" e

. w# |+ i- W5 T( v闲来无事,翻箱看到了这块板子,之前没玩过M0,现在来好好玩下,有板子的朋友可以一起指导交流!: |) k( S& K) q) \; i4 K8 }/ @
1 V: H; ?6 V6 I1 ]
首先打开ST的选型手册,看看板载的主控芯片STM32F030R8到底有多牛叉先
) V! @, m# E  Z( a STM32F030R8外设资源.png
5 [  {4 O+ z& N' r8 v0 A9 \, r& H0 S* \, @: L
64KFlash,8K的RAM,16*12bit的ADC,SPI、I2C、USART各2路,在JLC上查过,售价5个大洋左右,性价比还算不错,20个引脚的做到两块多....(这会不会和STM8有冲突)
$ R- e& m' K, [* [- k6 ?* \( p  ?1 |) ^& o3 a: U5 n7 f" x% p
板子的照片就不发了,和大多数的Nucleo板一样,那就直奔主题,来点灯吧!, q% g' k5 s5 h
5 v& n7 u2 H( n; t9 I% z
点灯前,养成一个好习惯-使能外设的时钟(在这点上,很多初学者可能多数都是从51过来,都是犯了这个错误)
  z0 g, ~- \& h7 p0 c. W; W既然有了时钟这个概念,那么这个时钟怎么来的,到底有快呢?
. H2 B. G& e  x8 w% a' p! x我们先看看时钟树(参考手册P90 Figure 10)
- D1 ?( ?7 W) E STM32F030R8的时钟树.png ( B2 x7 \2 }% K9 B
通过上面的时钟树,我们一共有三种不同的时钟源7 l0 G- ?% P/ z4 t6 B# m+ d6 J$ \
1.内部8MHz RC时钟# q# M% Y7 k) H- R* Z, ^) P
2.外部RC时钟(可接4-32MHz晶振)
: k2 ?. P8 o9 O. C/ X& W) @3.内部锁相环PLL时钟
/ \3 P4 E  ~# P由于STM32F030 Nucleo64这块开发板只留了HSE接口,焊接了LSE,我也懒得找晶振焊接上去,往后的实验会用HSI/2经过PLL,12倍频到48MHz给系统时钟(已经是这颗芯片最高时钟频率了!)
8 \% M" m5 R& `3 y% g! r; m! }既然要用PLL,那么我们打开参考手册P94,看看PLL是如何配置的:
; P, a1 n8 H! b! H  |7 }1 g: C PLL配置步骤.png
' u, \+ }6 O1 B9 K贴上代码:& p. V' Q- Y- g8 n( Z% q( `
  1. void SystemClock_Config(void)/ @7 X5 U8 u$ N& O& I/ e' v
  2. {      
    # J$ E3 l' M8 Q) S* `, ?
  3.     RCC_DeInit();                                           //将外设 RCC寄存器重设为缺省值  
    ' L6 i. F8 S' b- J. x9 }, e
  4.    
    9 v% `6 q0 d, |2 M/ `
  5.     RCC_HSICmd(ENABLE);                                     //使能HSI  $ H2 ?7 J. O/ K3 g* y, L$ e8 |( d
  6.     while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     //等待HSI使能成功% X$ d; A; q. Q; C, [2 R7 }! u2 L
  7.     RCC_PLLCmd(DISABLE);                                    //禁止PLL6 t# i* }. W6 g6 E% d
  8.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == SET);       //等待PLL禁止成功/ h, [1 w$ f; @) P
  9.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                        //AHB clock = SYSCLK" O9 ^+ R: S* _, Z! |
  10.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);   //PLL时钟来源HSI二分频,再12倍频,得出48MHz
    & b( R! ]- }& P4 `
  11.     RCC_PLLCmd(ENABLE);                                     //使能PLL
    & ~: c3 P9 _- o% s5 C( s
  12.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     //等待PLL使能成功
    * J% x0 A' B+ G3 d( x% W
  13.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);              //设置PLL为系统时钟
    $ ]& t; B& I/ I( @* f2 M
  14.     while(RCC_GetSYSCLKSource() != 0x08); 8 Y; U. U$ p: Q! q# {
  15. }
复制代码
那么时钟的配置就完成了,回到之前所讲的使能外设时钟。: D9 ~4 r, ]& o. ~7 r
GPIO是挂在在AHB这个时钟总线上的,对GPIO的时钟使能,我们可以通过RCC_AHBPeriphClockCmd()这个库函数来实现,代码如下:
& O1 X& j; W$ ~/ \+ ~
  1. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟
复制代码
板子上只有LD2才可以控制,是挂在PA5上,而配置GPIO的步骤如下:
/ g" Q2 t% u3 u" z- G2 f1.选择配置的端口
3 p# O% k' m! ]2.选择控制模式
# E& v. M4 s$ T$ q3.GPIO的速率
& h; q7 ^, m; |0 u- [$ Z. h% \3 h9 t
实现代码如下:
6 E/ R9 J! P+ J  ]. b6 s- U. K# E
  1. /*
    8 @( c0 E% r9 J7 S* r( _
  2.     LED2<----->PA51 _. p: {% L) m
  3. */          
    4 t8 a7 _! j; l
  4. //LED IO初始化
    & X5 L0 k7 w; [0 _
  5. void LED_Init(void)
    * U" ^! a# I1 b4 K
  6. {- o- M+ n* R1 o$ d% o
  7.         GPIO_InitTypeDef  GPIO_InitStructure;4 e1 \9 d# @# }; }4 S) ?% a
  8.        
    ' z* b. G$ j, }6 a6 y4 U
  9.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟9 y" U' H6 Z4 h- j) Y8 N9 r
  10.        
      K  B* e% z' W) [  m
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;           //LED0-->PA.5 端口配置
    / i2 h: H5 t! c3 I; ?3 [
  12.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;$ y! i+ M$ b8 x8 q. N. r
  13.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽输出
    ' ]/ L; i* D/ p% t
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz8 t: f5 s0 h" u7 m6 t7 q
  15.         GPIO_Init(GPIOA, &GPIO_InitStructure);                            //根据设定参数初始化GPIOA.5& S2 Q& u; L9 H- A/ K
  16.         GPIO_ResetBits(GPIOA, GPIO_Pin_5);                                    //PA.5 输出低电平 9 c/ B7 X! l; r& K; S$ q
  17. }
复制代码
到了这里就完成点灯这个步骤,如果让LED闪烁起来,那写一个简单的delay即可,我们这里顺带把Cortex-M0内核的嘀嗒定时器玩起来,让这个定时器完成delay功能,具体代码可参考官方例程,这里就不具体描述了1 |- d/ a1 \; X! \4 c

3 f" K3 Y2 u# g7 |4 e/ b
: {. R) i3 }) E
' L2 v! t' e4 T* Y5 x3 g1 a1 ]- Z* M, `$ ~! A
3 P' o8 N6 A/ k. k- m
' M4 L8 C+ o  y2 D0 z

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

赞 收藏 1 评论19 发布时间:2016-11-21 10:05

举报

19个回答
czhuanqilai 回答时间:2017-11-23 14:02:55
黑夜之狼 发表于 2017-11-22 22:08/ n* `2 m. l; U0 \6 A
驱动已经安装好了,不能下载代码吗?

! y( J8 D0 [* g) {" F额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。
/ F: r5 O: N! C然后程序也下载不进去
1 {7 \5 Q. `! o0 ?6 b下载程序我就知道一种,把.bin文件拖进虚拟U盘, x' s- }& L# I" y6 ^0 g
不会其他的方法了
黑夜之狼 回答时间:2017-11-23 16:31:41
czhuanqilai 发表于 2017-11-23 14:02+ O/ W- I; A  {: t; ~, Q
额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。1 P: `( `; v$ a6 c; N
然后程序也下载不进去4 |2 P' ~- k! l& I
下载程序我就知道一 ...

0 t- `7 r$ d! E( K/ o* F你发的截图是已经读取到驱动的呀,是不是你的代码工程配置有问题?
黑夜之狼 回答时间:2017-11-23 16:32:29
czhuanqilai 发表于 2017-11-23 14:02
2 ?# |6 c# m% }- X# ?额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。
- S1 s: n, {6 [0 A7 k, v  R1 m2 F然后程序也下载不进去; j* f* S" n3 F* v0 H- d
下载程序我就知道一 ...
& P5 i8 h+ u6 P) h7 \3 D6 j6 G# A
下载我帖子上的工程,然后连接开发板,直接下载,看看
黑夜之狼 回答时间:2016-11-21 10:06:57
上传工程代码:4 p3 f4 U7 Z' J: p- A1 h
STM32F030_LED.rar (1.52 MB, 下载次数: 121)
zero99 回答时间:2016-11-21 13:17:12
感谢黑夜之狼分享
peter001 回答时间:2016-11-21 13:19:09
谢谢分享
黑夜之狼 回答时间:2016-11-21 13:44:02
zero99 发表于 2016-11-21 13:17
5 ^0 h3 C2 Q; d) Y) L) K1 ~感谢黑夜之狼分享

& X: ]( W% w/ B0 e( E. h6 h感谢管理员和各位的支持,本人文笔实在一般,如果有错误的地方,还麻烦各位提出来,多多指导!
czhuanqilai 回答时间:2017-11-22 17:33:10
楼主,你好,我的手机号是13593144899.。积分不够,不能私信你,所以只好这样了,希望你能看到。。。  
czhuanqilai 回答时间:2017-11-22 17:33:29
楼主,你好,我的手机号是13593144899.。积分不够,不能私信你,所以只好这样了,希望你能看到。
czhuanqilai 回答时间:2017-11-22 17:43:35
前几天刚拿到板, 看了网上的一些资料,ST驱动en.stsw-link009也配置了,但不知道驱动安装成功没,不知道在线调试什么东东
黑夜之狼 回答时间:2017-11-22 19:55:46
czhuanqilai 发表于 2017-11-22 17:43' G3 X- N% _8 S4 ]$ o6 r" y! I
前几天刚拿到板, 看了网上的一些资料,ST驱动en.stsw-link009也配置了,但不知道驱动安装成功没,不知道在 ...
& ?! H) g/ j4 ?' U
把板子连接到电脑上,看能不能读出驱动来
czhuanqilai 回答时间:2017-11-22 21:24:37
黑夜之狼 发表于 2017-11-22 19:552 U, K4 o! B( C! L* ]9 V/ o
把板子连接到电脑上,看能不能读出驱动来
0 j. i: d& w& [% d7 `
第一次连接板子与电脑 就显示一个 设备  ST-Link Debug   
" g# B8 }5 ?" m- ~4 h& T0 w' v$ k安装完驱动之后什么也读不出来
czhuanqilai 回答时间:2017-11-22 21:49:16
这是安装驱动后的C:\Users\asus\Desktop\新建文件夹
czhuanqilai 回答时间:2017-11-22 21:52:39
这是安装完驱动后的 FW{21(IN)Y34KX9x`0S7T.png
黑夜之狼 回答时间:2017-11-22 22:08:09
czhuanqilai 发表于 2017-11-22 21:52
7 r+ u( b8 P9 h% A7 y8 L这是安装完驱动后的
% ]4 u; Q: Y" H  N; m! [; S* R
驱动已经安装好了,不能下载代码吗?
12下一页

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版