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

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

[复制链接]
黑夜之狼 发布时间:2016-11-21 10:05
本帖最后由 黑夜之狼 于 2016-11-21 10:05 编辑 & b! t) P0 m+ B. t# y7 P. Z
" s8 }! U7 _! v, c9 M8 S
闲来无事,翻箱看到了这块板子,之前没玩过M0,现在来好好玩下,有板子的朋友可以一起指导交流!# e! \% @2 J7 _$ I4 {
- C: J% c3 V$ l3 P3 l
首先打开ST的选型手册,看看板载的主控芯片STM32F030R8到底有多牛叉先- \8 R+ a# {9 c- r, o# o
STM32F030R8外设资源.png / t, h) [% d0 K  s8 J  ]
: @+ ^) j& e9 c$ d0 l0 U
64KFlash,8K的RAM,16*12bit的ADC,SPI、I2C、USART各2路,在JLC上查过,售价5个大洋左右,性价比还算不错,20个引脚的做到两块多....(这会不会和STM8有冲突)' o  t1 ^4 ?0 ^$ j
- ~' ~. s3 z- C: s/ C  N
板子的照片就不发了,和大多数的Nucleo板一样,那就直奔主题,来点灯吧!
/ s/ C5 R. T8 C5 Z' n0 i
" q1 w, h% }+ I点灯前,养成一个好习惯-使能外设的时钟(在这点上,很多初学者可能多数都是从51过来,都是犯了这个错误)- u4 d7 f2 C- h3 W7 \; ]  |  E
既然有了时钟这个概念,那么这个时钟怎么来的,到底有快呢?
. H9 [2 D; O; l1 U我们先看看时钟树(参考手册P90 Figure 10)! M) q# p0 p1 D% r- P' [
STM32F030R8的时钟树.png
0 t2 R! c5 h5 @4 @2 l通过上面的时钟树,我们一共有三种不同的时钟源
4 s( J" G- u! Z& h2 c0 ^. S1.内部8MHz RC时钟1 c- p- |. H# G3 I5 A
2.外部RC时钟(可接4-32MHz晶振)
- e% G+ `1 V" T5 i1 s; g$ |- L. Q3.内部锁相环PLL时钟
  p' n) O0 |3 l9 c由于STM32F030 Nucleo64这块开发板只留了HSE接口,焊接了LSE,我也懒得找晶振焊接上去,往后的实验会用HSI/2经过PLL,12倍频到48MHz给系统时钟(已经是这颗芯片最高时钟频率了!)
0 T5 @8 b  F0 k6 o既然要用PLL,那么我们打开参考手册P94,看看PLL是如何配置的:3 V" Q; x8 v8 L* g: `
PLL配置步骤.png
4 d( @4 K7 [! J贴上代码:
) K- _+ X+ U- v+ }
  1. void SystemClock_Config(void)
    2 Z: N7 ^/ Q& Y. @& ?
  2. {      
    / R2 I9 t7 Z9 S
  3.     RCC_DeInit();                                           //将外设 RCC寄存器重设为缺省值  
    - s" w7 }7 D( w1 i
  4.    
    " ?. h1 p3 a7 A% k
  5.     RCC_HSICmd(ENABLE);                                     //使能HSI  $ p0 f6 l  u! Y' w7 j4 |% Y( }
  6.     while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     //等待HSI使能成功
    7 @* D5 U2 d$ l7 W6 Z# l
  7.     RCC_PLLCmd(DISABLE);                                    //禁止PLL
    & x; S4 ^2 l. T" N: f' ^4 q
  8.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == SET);       //等待PLL禁止成功3 U+ ~# F6 m' |% t$ P& L
  9.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                        //AHB clock = SYSCLK
    ( K$ t' [* ^. [# X6 c( x
  10.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);   //PLL时钟来源HSI二分频,再12倍频,得出48MHz
    1 J9 }  R3 L( X% c; s8 A! o0 d) u
  11.     RCC_PLLCmd(ENABLE);                                     //使能PLL/ f' W5 j5 s6 u) ^6 h3 |
  12.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     //等待PLL使能成功
    3 o3 ]# z6 J$ Y
  13.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);              //设置PLL为系统时钟# R. G8 c" f. s  w# S
  14.     while(RCC_GetSYSCLKSource() != 0x08);
    0 c/ N. f8 J- A' ~
  15. }
复制代码
那么时钟的配置就完成了,回到之前所讲的使能外设时钟。9 ~) y5 `( D9 f: R9 U3 d
GPIO是挂在在AHB这个时钟总线上的,对GPIO的时钟使能,我们可以通过RCC_AHBPeriphClockCmd()这个库函数来实现,代码如下:
0 @" G) j4 [% e7 i2 ]
  1. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟
复制代码
板子上只有LD2才可以控制,是挂在PA5上,而配置GPIO的步骤如下:
( D, {: O# T3 L" j1.选择配置的端口
* D' E/ h% [2 x- p2.选择控制模式8 u, d! \/ i6 y5 }3 e( A- e8 R
3.GPIO的速率
. J( C( m+ @+ m2 G4 [
, h/ M8 x  s$ O; y, m实现代码如下:+ o( ^3 r: P. N( Y
  1. /*
    7 g( P% C9 t7 N- G) c
  2.     LED2<----->PA5
    % q' t9 u2 W" O* l9 l& L
  3. */          
    4 {- ?7 b: m* p# G
  4. //LED IO初始化
    8 s: v' r  U1 Q  U6 J& b5 \
  5. void LED_Init(void)
    8 b$ _0 F) q/ d. z; G
  6. {! l6 S6 A* ?1 N9 m
  7.         GPIO_InitTypeDef  GPIO_InitStructure;
    ! _* Z1 ?) e4 }: u: `/ _- g- J! e
  8.        
    9 X0 N  j. Q1 Y( T
  9.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟; N: Z: o* p/ e) }& V1 d8 O, s; _( S
  10.         ) ?7 b4 u9 R+ f! s; U8 `* e
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;           //LED0-->PA.5 端口配置
    4 k5 E6 ~. Z8 S1 i
  12.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    ) i* T8 B, K8 F9 i
  13.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽输出
    : X  E9 `0 k- j. n; `" x
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz" D6 L% ~0 X3 v$ G. z
  15.         GPIO_Init(GPIOA, &GPIO_InitStructure);                            //根据设定参数初始化GPIOA.5
    + V8 D  H0 I/ N: M8 n2 _, ^- E
  16.         GPIO_ResetBits(GPIOA, GPIO_Pin_5);                                    //PA.5 输出低电平 # {# J! A  x+ m1 r( V! i
  17. }
复制代码
到了这里就完成点灯这个步骤,如果让LED闪烁起来,那写一个简单的delay即可,我们这里顺带把Cortex-M0内核的嘀嗒定时器玩起来,让这个定时器完成delay功能,具体代码可参考官方例程,这里就不具体描述了* J3 a. z. ~6 `( A1 e$ n
2 U. \" e8 Q: T+ L- F( E* x

3 p  A+ |3 c4 ^4 O2 g% O
" T& ?7 P3 e- W/ K8 l8 ?) Q  t7 @+ V, C4 W* V: }
7 W: T' |& S* h1 h7 v4 U: T

* e- _$ V* j4 I1 j

评分

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

查看全部评分

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

举报

19个回答
czhuanqilai 回答时间:2017-11-23 14:02:55
黑夜之狼 发表于 2017-11-22 22:080 b) ?. i  t$ F. L! R5 t/ z
驱动已经安装好了,不能下载代码吗?

" f# _+ m- H, E7 C) C( D- W额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。* ~# m3 @. |. \$ H0 ?
然后程序也下载不进去) s* K7 V' D" ^! G" J
下载程序我就知道一种,把.bin文件拖进虚拟U盘
; t* N' O2 @/ s. l不会其他的方法了
黑夜之狼 回答时间:2017-11-23 16:31:41
czhuanqilai 发表于 2017-11-23 14:02
$ G4 y8 [& m* r5 z8 y- G, |( s额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。
3 L( a6 w$ S: S5 [1 A8 d( M: E1 R' q然后程序也下载不进去3 u, R1 v& u5 i8 L3 M6 b& Y/ v/ w
下载程序我就知道一 ...

: Y& }7 i* T1 N: l4 b你发的截图是已经读取到驱动的呀,是不是你的代码工程配置有问题?
黑夜之狼 回答时间:2017-11-23 16:32:29
czhuanqilai 发表于 2017-11-23 14:02
5 H/ ]5 O, A; @2 Q5 a额,跟着论坛里某一位大神安装的,设备管理器里读取不了驱动。
4 i2 j7 P. y/ A然后程序也下载不进去, A; B9 z. J, D' \1 T% E( h
下载程序我就知道一 ...

$ q1 u* }- B  H4 `4 G) l! M下载我帖子上的工程,然后连接开发板,直接下载,看看
黑夜之狼 回答时间:2016-11-21 10:06:57
上传工程代码:. t( |! M, E* @  H" n- ?
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
2 w' i$ A6 _( V1 J感谢黑夜之狼分享

- m' H5 l2 B% w! T% Z感谢管理员和各位的支持,本人文笔实在一般,如果有错误的地方,还麻烦各位提出来,多多指导!
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
7 J; K  ?9 |3 {; `) T2 ~# S前几天刚拿到板, 看了网上的一些资料,ST驱动en.stsw-link009也配置了,但不知道驱动安装成功没,不知道在 ...
7 S: |  P: x6 H9 X. V2 W
把板子连接到电脑上,看能不能读出驱动来
czhuanqilai 回答时间:2017-11-22 21:24:37
黑夜之狼 发表于 2017-11-22 19:55# T/ Y) c1 L# i) g$ `- o7 J( k
把板子连接到电脑上,看能不能读出驱动来
7 U: H8 c( |" h: P6 X3 ?; N
第一次连接板子与电脑 就显示一个 设备  ST-Link Debug   $ A% _) t; l- ~9 p& P
安装完驱动之后什么也读不出来
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& ~* `9 Z) @6 M3 e4 T
这是安装完驱动后的
! i& \; ?0 T; I" f: I  p
驱动已经安装好了,不能下载代码吗?
12下一页

所属标签

相似技术帖

官网相关资源

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