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

STM32F411【Nucleo】第二课--led灯(基于keil5.13)  

[复制链接]
颩色四葉愺 发布时间:2015-2-1 12:38

+ @# W. e' F9 `. T$ }5 q: |: \/ G0 g% y1 L3 B1 f9 f  z  s" O* l/ ]
(1)查看板子的原理图,板子上的led灯即led2接的是PA5.
9 Y( Z( D+ s1 w* [  ?( r6 b* R1 v3 d3 y6 s
(2)建立工程,新建工程的步骤就不说了!请参考我之前的帖子:
5 J5 I0 B, x) n! qSTM32F411【Nucleo】第一课--新建工程(基于keil 5.13)2 j; F; `$ H% g. Q6 {2 o
(3)新建两个文件  分别为bsp_led.c    bsp_led.h 记得要把C文件加载到工程中,还有头文件路径要加上不然会出现编译出错的!代码如下:
5 N2 I+ _8 C! L1 E  f! }/ @bsp_led.c:
+ ?7 a- y3 o# U+ i; G/ C7 k
  1. #include "bsp_led.h"
    - H  P/ b$ ^0 _

  2. 8 p) z% d8 _9 {& j! j1 {& x
  3. void LED_GPIO_Config(void)
    $ o+ q) W6 j9 K; }4 t
  4. {) M% P7 f! u( {2 b: r
  5.         GPIO_InitTypeDef GPIO_InitStructure;
    ( s2 S3 C) Z$ u6 S* `  A% Z
  6.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能LED灯IO时钟
    * O4 o" Z" g% e/ Q6 U3 `% s9 b# n
  7.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;                                //选定引脚
    % K4 M  ^2 G$ w
  8.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;                        //设置为普通输出
    # [" T, C) ]  b" m/ x
  9.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;        //输出频率为100MHz
    1 o" z; C1 J  K/ D0 B% g5 T
  10.         GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;                        //设置为上拉5 [9 O3 O; l- P( M' P: J# k
  11.         GPIO_Init(GPIOA,&GPIO_InitStructure);- L& w  i7 u  Y& h9 v0 D; J7 z
  12. }
    5 b" k9 V  f0 ~, X! H# z! Y
复制代码
bsp_led.h" e$ v" T/ e, y
  1. #ifndef _BSP_LED_H_
    7 M2 u$ t: `: S9 _- [. i4 M
  2. #define _BSP_LED_H_
    6 }* u) L# l$ W' I8 H" o6 \

  3. : V" ^& N& \0 [4 Z6 Y  i
  4. #include "stm32f4xx.h"
    0 t' V: Y& \9 D, G) Z! [+ w/ Q5 a

  5. / g7 W0 k) }, e2 U+ F3 T
  6.                 /******************************/ C+ l( X  W# b4 S* k
  7.                         板载led采用控制led阳极
    7 _4 o5 z2 a3 S! m' a: K4 s6 W) {9 f
  8.                 *******************************/
    & ~$ ]# n- ~% U" ^/ w% m
  9. #define ON 16 {8 ~7 R2 `( W
  10. #define OFF 0% q/ n" x9 Y6 q& p) X$ b: t- U
  11.                        
    ! O3 M4 ?, Y1 @/ }! R
  12. #define LED(a) if(a) \
    8 r" {% q7 G8 E  z3 }
  13.                                 GPIO_SetBits(GPIOA,GPIO_Pin_5);\
    , o) v) c8 q, o6 _. n2 i. B
  14.                                 else \$ N( {0 D8 G! {, ~8 l# H5 A/ C
  15.                                 GPIO_ResetBits(GPIOA,GPIO_Pin_5)
    - {9 m" w( K) ?4 q  @/ L0 q' @& M
  16.                                
    6 K0 U5 E, s: [& `% U4 K. C6 f9 n' A
  17. void LED_GPIO_Config(void);
    $ P  u$ s7 e# |' A- M9 C
  18. #endif
复制代码

5 L) `0 W# m' O& t1 R3 M7 |4 }: Y! k(4)修改main.c 代码如下:7 s* {% s# s; ?) I! R
  1. #include "stm32f4xx.h") q( Q1 J9 {  g; W$ R# E& ~
  2. #include "bsp_led.h"
    8 E8 }, c, M7 R  ^$ u+ n9 S3 v
  3. ! b& ^$ J1 \" X. v3 W
  4. 9 C" l% s5 R3 z7 K
  5. /**************粗略延时**************/1 E- N* X8 j& O& U. ~9 c+ U
  6. void Delay(__IO uint32_t nCount); i( `2 U5 j! L* {
  7. {
    : X' `; H4 K9 H( W4 j
  8.                 while(nCount--){}
    ' l5 e) L) ]% Z( \( q
  9. }4 H6 @6 I) [  z7 v1 M8 C% ?
  10. 7 |% r  r' b$ l- i# l* F! K( N7 v/ x4 `
  11. . k5 N" S* k5 P: n& v
  12. int main(void)
    & d! Y& `8 g2 D9 k$ O
  13. {    5 p  t5 i# h! v& G% V$ ?9 \
  14.   LED_GPIO_Config();//初始化LED灯IO口--PA59 u5 e. h/ W" [7 B1 x
  15.   while (1)1 j+ i0 x+ |0 g. r+ r/ R
  16.   {
    $ `2 C4 ?5 g& {- K3 V7 u2 H) a; Y
  17.           LED(ON);
    2 }  I! B6 d& g' L
  18.           Delay(0x7FFFFF);. a7 q6 z4 N/ }( n5 v$ z9 W- K# T
  19.           LED(OFF);
    ' u9 F+ o: t) K& c" ~
  20.           Delay(0x7FFFFF);
    8 ^9 m4 w" a& |; \7 u1 z8 S
  21.   }: F. b# e; F: U# g1 C* \
  22. }
    6 L$ F* {9 }2 C) d* _6 a
  23. & B8 n) g0 a1 x# \2 e  V$ y* F
  24. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/& x. b. B) D- {/ _3 l9 R6 A
复制代码

. f) m2 f' r6 a( P下载到板子之后就能看到led灯一闪一闪的跑着了
! Y& M4 T3 ^) f  A5 R, W& o# B  b( ~' S" Z# J
还有系统时钟的话,我们可以不用配置,因为启动文件已经把系统时钟默认配置为100MHz了
4 p! K1 o% V9 C1 X
  1. Reset_Handler    PROC1 B$ ^) P  T( F: r
  2.                  EXPORT  Reset_Handler             [WEAK]5 p# f- a. u+ x
  3.         IMPORT  SystemInit
    , A/ c( M# p; Z4 j
  4.         IMPORT  __main, s4 n$ `: r# V2 O5 \6 d0 d
  5. & q2 B! |7 a$ [8 x
  6.                  LDR     R0, =SystemInit
    , c# Q) ^" B: P. c0 A* X2 B
  7.                  BLX     R09 x( U6 e: H$ x. H
  8.                  LDR     R0, =__main
    " G# W0 @2 C2 e+ J; A6 w6 |
  9.                  BX      R0
    ' o* I) T' E3 w6 f/ f  d8 {
  10.                  ENDP( \) }/ z9 z/ @) J
复制代码
  1. #if defined (STM32F411xE)
    8 l1 R- G4 t3 v2 {) ^
  2.   uint32_t SystemCoreClock = 100000000;
    # E* O* g  J9 C; J& u' }4 Z
  3. #endif /* STM32F401xx */
复制代码
附上代码源文件和原理图
* q" V& ^( X9 L) e$ z  X/ @ 2.LED灯测试.zip (8.54 MB, 下载次数: 765)
赞 收藏 3 评论30 发布时间:2015-2-1 12:38

举报

30个回答
xuyi 回答时间:2015-6-25 21:31:19
你好楼主,请问你的这块板子的原理图是在官网下的吗,我怎么没找到,能不能发个链接给我让我知道下在哪里找,以后就知道了。谢谢
颩色四葉愺 回答时间:2015-2-1 15:56:00
大秦正声 发表于 2015-2-1 13:40' p3 G9 X' ?' O& v4 A) i
谢谢!官方的f4例程比f0少多了!
3 R; P. A) q3 P) J6 F
啥?为什么要回三次呢    等会管理员以为我灌水咋办
大秦正声 回答时间:2015-2-1 16:32:24
颩色四葉愺 发表于 2015-2-1 15:56
4 N/ T% U6 V0 j5 m% k" E! X啥?为什么要回三次呢    等会管理员以为我灌水咋办
2 q1 F& [+ C* Z0 Q, r
对不起,网络不好!
星辰一方 回答时间:2015-2-1 12:49:37
不错,感谢分享!
大秦正声 回答时间:2015-2-1 13:40:15
谢谢!官方的f4例程比f0少多了!
大秦正声 回答时间:2015-2-1 13:40:38
谢谢!官方的f4例程比f0少多了!
大秦正声 回答时间:2015-2-1 13:40:57
谢谢!官方的f4例程比f0少多了!
sting 回答时间:2015-2-1 20:13:30
谢谢
lkl0305 回答时间:2015-2-1 21:45:33
多谢多谢
lkl0305 回答时间:2015-2-1 23:09:43
多谢多谢
181wh 回答时间:2015-2-2 07:53:43
多谢多谢!!
拼命三郎 回答时间:2015-2-2 08:44:19
stm32.jpg
sirius65 回答时间:2015-2-2 09:12:51
跟着学习了。
wn1900 回答时间:2015-2-2 10:18:15
支持一下
化石翼龙 回答时间:2015-6-20 20:02:54
很好的帖子,最近正在用f411
123下一页

所属标签

相似技术帖

官网相关资源

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