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

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

[复制链接]
黑夜之狼 发布时间:2016-11-21 10:05
本帖最后由 黑夜之狼 于 2016-11-21 10:05 编辑 * I3 A' U* q: ?7 L
9 r: b, n/ t+ ~- B2 Y9 w5 f9 l0 k" z
闲来无事,翻箱看到了这块板子,之前没玩过M0,现在来好好玩下,有板子的朋友可以一起指导交流!- Q2 B# r# N5 R5 \  C4 j0 g) _. m  a( _

4 q4 O; j1 S; I" \首先打开ST的选型手册,看看板载的主控芯片STM32F030R8到底有多牛叉先
# B* u! Q: F7 g' ?7 Z4 U' \7 L STM32F030R8外设资源.png + c: q! d# N; c) ]. Y5 x4 P* V

3 @- H) t  O! _64KFlash,8K的RAM,16*12bit的ADC,SPI、I2C、USART各2路,在JLC上查过,售价5个大洋左右,性价比还算不错,20个引脚的做到两块多....(这会不会和STM8有冲突)
6 v+ e. g/ r) X) V& }- w* j4 ^. Z1 q& s1 ~! f1 ^
板子的照片就不发了,和大多数的Nucleo板一样,那就直奔主题,来点灯吧!
7 u3 u& I3 S. P! u. _8 z' R9 m
2 _" G( ^$ K! z6 h$ y点灯前,养成一个好习惯-使能外设的时钟(在这点上,很多初学者可能多数都是从51过来,都是犯了这个错误)
0 I9 g! H  a6 o, N' D  u/ e/ V+ T既然有了时钟这个概念,那么这个时钟怎么来的,到底有快呢?* A' l2 q2 B/ I2 i) c* N
我们先看看时钟树(参考手册P90 Figure 10)
. A9 M1 B2 ~1 w2 L" C5 c/ l STM32F030R8的时钟树.png + b* o7 ]; p$ K) n6 z
通过上面的时钟树,我们一共有三种不同的时钟源- \0 u7 F) Y8 {" A* E  m
1.内部8MHz RC时钟7 P/ J6 F: T) P4 C) ?
2.外部RC时钟(可接4-32MHz晶振)
0 K+ v9 h3 k6 B3.内部锁相环PLL时钟
$ w, ]0 n' g+ i  h5 r由于STM32F030 Nucleo64这块开发板只留了HSE接口,焊接了LSE,我也懒得找晶振焊接上去,往后的实验会用HSI/2经过PLL,12倍频到48MHz给系统时钟(已经是这颗芯片最高时钟频率了!)4 u! N; X1 r' T. G5 z3 }
既然要用PLL,那么我们打开参考手册P94,看看PLL是如何配置的:; Y# O7 H5 T; K- i
PLL配置步骤.png
8 h, H, U( L* I0 ?, Y贴上代码:
) t6 A- v% h8 \
  1. void SystemClock_Config(void)
    8 s+ P9 X. q- O
  2. {      0 X2 _; l4 t* u$ ]: I5 B( g* V* w
  3.     RCC_DeInit();                                           //将外设 RCC寄存器重设为缺省值  7 d4 `# k* \9 q2 D" n) T
  4.    
    0 q7 ~% G+ [5 a8 T- R. w; P
  5.     RCC_HSICmd(ENABLE);                                     //使能HSI  
    % v* Z$ _8 O# j+ V  J
  6.     while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     //等待HSI使能成功% j& P  V' z7 ^! b9 [- T' K5 I( C
  7.     RCC_PLLCmd(DISABLE);                                    //禁止PLL8 Q0 m! a' [2 e- M4 c9 j9 y
  8.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == SET);       //等待PLL禁止成功7 f6 W+ y; W3 I! v
  9.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                        //AHB clock = SYSCLK
    % {' x. K# w- P+ y$ @2 R( o
  10.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);   //PLL时钟来源HSI二分频,再12倍频,得出48MHz
    9 V  q5 |( G+ V$ y. H9 h; i
  11.     RCC_PLLCmd(ENABLE);                                     //使能PLL
    " E1 _8 Z- t" a. o8 E4 |& A
  12.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     //等待PLL使能成功
    5 |9 i( p& d9 |1 @' q
  13.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);              //设置PLL为系统时钟0 `/ x1 R/ d! k% e- b
  14.     while(RCC_GetSYSCLKSource() != 0x08);
    6 c( V, j, t0 H$ e
  15. }
复制代码
那么时钟的配置就完成了,回到之前所讲的使能外设时钟。
8 F* S# n- u' B7 [5 z) e. }5 U+ d; XGPIO是挂在在AHB这个时钟总线上的,对GPIO的时钟使能,我们可以通过RCC_AHBPeriphClockCmd()这个库函数来实现,代码如下:
# r1 B3 }! C; F1 T5 {" D
  1. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟
复制代码
板子上只有LD2才可以控制,是挂在PA5上,而配置GPIO的步骤如下:
2 v5 H6 w% Z' |  Q4 p  G1.选择配置的端口. {2 ?) @( D; Q+ k
2.选择控制模式
" J/ X5 G6 g" f) r: r5 q7 b3.GPIO的速率! m5 b0 X& l# d2 O8 D9 c

5 X. }5 K( f  P4 S" v实现代码如下:
/ B! Y2 z  s' r6 _$ K0 U
  1. /*
    ! _6 {; ?  c$ f; M
  2.     LED2<----->PA5
    0 v% M; _' p( q! J( o* P# o
  3. */           ! F; z  K# O/ f7 B, Z7 ^
  4. //LED IO初始化
      `7 Z6 o4 O- n
  5. void LED_Init(void). u/ `* w  h1 z: T$ i
  6. {
    - P; N, B/ d+ W( f8 w
  7.         GPIO_InitTypeDef  GPIO_InitStructure;" G* H$ M+ g$ H6 f' [
  8.         5 j: Z6 M2 p  t' I
  9.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟- L' J. |# A( I3 V7 c9 O: s2 c- e
  10.         0 d8 I" W$ R+ X9 h) |: O
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;           //LED0-->PA.5 端口配置# p. S  ]1 f! l. u  n& H
  12.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    8 _6 q6 o8 ^& R1 E6 r
  13.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽输出, @; t) r  j! ~3 ^
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz
    0 j: ?6 L' Q: W, S- U( S5 B2 g3 a
  15.         GPIO_Init(GPIOA, &GPIO_InitStructure);                            //根据设定参数初始化GPIOA.5
    ; h7 Y! f# j+ x. H! _& [
  16.         GPIO_ResetBits(GPIOA, GPIO_Pin_5);                                    //PA.5 输出低电平 % r/ o3 m/ K+ `. N* c) k
  17. }
复制代码
到了这里就完成点灯这个步骤,如果让LED闪烁起来,那写一个简单的delay即可,我们这里顺带把Cortex-M0内核的嘀嗒定时器玩起来,让这个定时器完成delay功能,具体代码可参考官方例程,这里就不具体描述了
" ^: K# i6 _, G$ v& [4 j$ M! S; e9 k. j2 R" A( z/ D+ T: N

1 ]7 X( y3 e7 t  f) N6 I- K9 E8 E& u$ H3 K6 e6 m3 l
6 ?: Y* V+ P# E1 B
( S# i  S$ m& W  M0 @) z9 M! ]; F2 C

6 H, Y) B# C  c( Z4 R: X; S

评分

参与人数 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! K* |. A. q& E8 ]1 `
驱动已经安装好了,不能下载代码吗?

7 t7 e3 }, V7 W0 [; B额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。
0 ~2 g% T: ~7 M5 P0 h& X* o) b! J然后程序也下载不进去
- C- R7 s" L4 N$ B- D下载程序我就知道一种,把.bin文件拖进虚拟U盘) i3 f9 o! {3 d0 U
不会其他的方法了
黑夜之狼 回答时间:2017-11-23 16:31:41
czhuanqilai 发表于 2017-11-23 14:02
6 o( |/ }2 v1 e. ^额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。
6 ~- {) {' x; ^8 q5 {然后程序也下载不进去+ Z$ T/ a9 k4 N1 S
下载程序我就知道一 ...
! D- ~8 r1 x: t& s4 L) }& n) D
你发的截图是已经读取到驱动的呀,是不是你的代码工程配置有问题?
黑夜之狼 回答时间:2017-11-23 16:32:29
czhuanqilai 发表于 2017-11-23 14:02
  F6 M, t8 O8 [7 Y7 G% {8 c- U额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。% P& k5 q" }( z. Y4 I4 v8 Y" z
然后程序也下载不进去  `& z/ ?/ r! j9 M3 N
下载程序我就知道一 ...

" l! d$ d, a7 b2 [' d* X  i下载我帖子上的工程,然后连接开发板,直接下载,看看
黑夜之狼 回答时间:2016-11-21 10:06:57
上传工程代码:
1 C2 t6 y5 i* W( A8 A 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
4 O, [5 [5 B  A4 d0 @感谢黑夜之狼分享

9 F$ @! m9 L4 H; z* S( R感谢管理员和各位的支持,本人文笔实在一般,如果有错误的地方,还麻烦各位提出来,多多指导!
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
- m4 ]  v  J) j5 u9 k9 t! f3 g: h前几天刚拿到板, 看了网上的一些资料,ST驱动en.stsw-link009也配置了,但不知道驱动安装成功没,不知道在 ...
# Q: q! w; z  n. O  v. `6 ]
把板子连接到电脑上,看能不能读出驱动来
czhuanqilai 回答时间:2017-11-22 21:24:37
黑夜之狼 发表于 2017-11-22 19:55
( C" l6 W. k) ~6 t  F把板子连接到电脑上,看能不能读出驱动来
- X$ Q- r$ l: T4 r% Q! Y
第一次连接板子与电脑 就显示一个 设备  ST-Link Debug   + ~4 z, g% F7 ^" f1 p* ~1 X
安装完驱动之后什么也读不出来
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+ Z" w0 j( `7 n# ~( v0 R
这是安装完驱动后的
& q) w' P! E* s  i% m% ~2 o1 \
驱动已经安装好了,不能下载代码吗?
12下一页

所属标签

相似技术帖

官网相关资源

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