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

STM32F072 NUCLEO 咱也来点 个灯

[复制链接]
yceast 发布时间:2014-12-26 11:14
开发板到了,先点个灯吧,使用STM32CUBEMX,对HAL库还不是很熟悉,才开始还走了一点弯路,不知道HAL_GPIO_WritePin()函数如何设置,后来发现原来在这里, (_UYIJ2[9P$N6D}0B%}BAWR.png 呵呵,见笑了,参考了汇总帖才弄好。- c* j8 M( }% }0 ^) v: O
/ O4 K3 x8 e% J  \0 _
以下是main()函数,总体感觉HAL库还是很好用的,要是有更详细的文档说明就更好了。( T" h: g, z1 c! y+ L8 R) H
/**
6 F8 i( B; `) W9 X6 N& J  ******************************************************************************
# N8 Y* V! o+ J5 }# P3 V& }) }  * File Name          : main.c4 g) o" e- Q9 `+ f$ D! q8 x% `3 B
  * Date               : 25/12/2014 16:24:543 J2 R4 I) t. e' v" p0 V% d& O
  * Description        : Main program body
4 t' w9 O$ h& v( D* b9 L+ A4 @, Q  ******************************************************************************1 a* d3 H& s  |6 L
  *
0 X1 @( |1 |1 v2 G  * COPYRIGHT(c) 2014 STMicroelectronics
, E1 W  _/ w. N+ ]; |) f+ E' p. q' `  *  j8 N' I. q0 z. y0 e/ ^
  * Redistribution and use in source and binary forms, with or without modification,& F0 Y6 G0 t7 `. x+ w$ K2 Y$ v
  * are permitted provided that the following conditions are met:
3 F6 D/ Q( \1 L# m2 u/ l  *   1. Redistributions of source code must retain the above copyright notice,8 }. n+ Z/ O2 e$ G2 V1 ?$ ^3 J
  *      this list of conditions and the following disclaimer.+ Q8 a$ l) ]% C+ [% _2 U
  *   2. Redistributions in binary form must reproduce the above copyright notice,
$ }4 ]6 T8 }! s  *      this list of conditions and the following disclaimer in the documentation! {/ U3 r* J0 g! d0 \
  *      and/or other materials provided with the distribution.
8 f' g0 Q9 \- B4 e) j0 N8 n- H* b  *   3. Neither the name of STMicroelectronics nor the names of its contributors
; L- c6 k" @8 n  *      may be used to endorse or promote products derived from this software! R, N6 g  N& o7 N( q2 g4 s5 s
  *      without specific prior written permission.
! G. {+ G$ W6 X/ `# s  P; o' T  *
' Q' e$ Y9 Y' B) {9 F' w2 a# t  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
$ I' I3 Y" K( N7 s  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2 |: I5 U$ Q' d$ h  f  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE- J8 |6 Y6 H. d6 \
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
6 [9 }$ J0 ?+ i  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL3 U# M* Y! u: x' j- h& G! E$ w
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
6 C9 v/ Y: q/ l$ R  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER) P8 r8 E+ M5 A* N
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,6 ~9 w. f& X2 t% Y2 l9 |6 i
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE% P# W5 D/ @& t3 _+ i3 H
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.9 k& @/ O2 f+ Y6 F% S
  *
3 y6 C. |" [* d# G5 m$ E' Y: h" X% x  ******************************************************************************
2 _9 O1 R) [& M4 g/ D  */! |7 W! h5 }/ {; e( p
( R+ f) p& |- j" Y7 Q8 h, O
/* Includes ------------------------------------------------------------------*/
' y: }. _+ f- g: u8 I: r#include "stm32f0xx_hal.h"
* P! Q1 Y. y/ z# q9 }# k- I9 q6 y" d3 ~& `. U, ^; I  b- I) b
/* USER CODE BEGIN Includes */% h, s" Y/ ?8 O4 O

) k3 {) H# ~& e: @/* USER CODE END Includes */
$ [7 U8 Z% z' v, ^. c" f# K
/ L1 X, ^2 I& j  o! Q1 r( |/* Private variables ---------------------------------------------------------*/
% p0 D! g) U- p: @; K$ H& H' Y4 t( w+ t/ |
/* USER CODE BEGIN PV */9 M" F, O/ @( L) L- ^3 D6 }
. I' a" z' i: t: |, U; e
/* USER CODE END PV */9 ?7 v5 m+ |3 B& I

1 ?! _! A7 W6 y# q/* Private function prototypes -----------------------------------------------*/8 E: `8 k5 O: h# _
void SystemClock_Config(void);/ j7 N! V+ w& h4 t* L) W0 ~
static void MX_GPIO_Init(void);9 h; O! q/ m/ [8 o6 V3 x6 j, e7 G
& P: ]# q) N3 M8 W; P1 |3 P& l
/* USER CODE BEGIN PFP */
# R0 [# h1 j. ]. O. h; V8 U+ i; L/ h/ W0 A- e: {: W8 s* [! w
/* USER CODE END PFP */
7 b3 T3 M0 }+ n) \; q* T# b0 K: c' W$ l% m+ {1 s% A) O( e' L  j
/* USER CODE BEGIN 0 */
) U2 o& S, A  E5 Y: {$ H
% I% X, y/ e- a1 l' _3 g- ^/* USER CODE END 0 */
: U2 H7 d5 R, @1 Y" n' p& l( E( @6 W2 c9 D6 x, X
int main(void): P  R* z5 g2 d' V% i; ]
{, t( V$ u8 o2 o$ H% R; B

, d; I0 f  A6 k  S. X/ f  /* USER CODE BEGIN 1 */
6 q: T. n' |0 Z- t  C- x- C# E& E0 o/ l, Y
  /* USER CODE END 1 */$ e  Z/ v9 w  U. r. R

" W) K( o; m1 @  /* MCU Configuration----------------------------------------------------------*/
9 b9 Q- i9 |( }+ L' g9 C$ w
5 l3 D6 b6 _. x  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */$ s- p' w8 z* I9 N% j5 Z5 L
  HAL_Init();
" m. ]' ~/ a& {8 F: Z9 }( H4 D6 J* a# u: z' T
  /* Configure the system clock */
/ a" k/ S# T; t( f2 q  SystemClock_Config();; d0 B! G% m3 y, U  D8 l8 ~

* i; t& K- \% o9 M& [  /* Initialize all configured peripherals */
; \% ?! @% I9 f+ V3 }. C7 q  MX_GPIO_Init();
6 V* F( U8 V4 f. [5 s0 M4 K) K. \3 j. m0 ^
  /* USER CODE BEGIN 2 */
& V! N* L3 p! Q  
" L5 |, T" Z3 W3 d' }  /* USER CODE END 2 */
  d. m' J. W1 h. h6 G. ?% A5 x% A) e6 c* n4 G, W
  /* USER CODE BEGIN 3 */( \, s. u8 E3 c+ v+ O
  /* Infinite loop */
6 O* j/ E" ^7 R$ W) }7 L# k  while (1)
( ^3 k/ S0 f1 x# E$ N  X' O  {$ m' O1 v5 J, F" n* z7 ]0 o9 q8 u4 v
     HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);& J' Q! Z! o# d  M& J
         HAL_Delay(500);
2 E# ?3 V& Z- M1 b* E6 M) Z) _" Y) W  g         HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
, b' |2 `/ {+ {1 g6 m. |         HAL_Delay(500);
" J8 Y  I2 W: O( j, W8 k  }
2 I8 k5 V% B% `9 z+ \; Y/ p  /* USER CODE END 3 */" p6 _( x( O# T) ?$ t3 n
. s3 h4 T  i9 L! M! f4 _1 A3 l, y
}. G. T7 S: Q' n  z
, a+ A9 E0 q& |6 h
/** System Clock Configuration8 [# k0 ~1 v4 k- e) Z
*/* g# A; z; c/ P; K; E1 u/ n* s7 @
void SystemClock_Config(void)! I! v! i5 S( p/ a/ Y- j: i
{, J2 G* C4 Z$ l) F5 t4 [
: Z: P* [' N4 j7 D4 i, N
  RCC_OscInitTypeDef RCC_OscInitStruct;
$ B+ g1 V5 I: |6 ~/ V$ ?  RCC_ClkInitTypeDef RCC_ClkInitStruct;! l+ x, }% {( r# U3 q- R' B5 _) e. L! a
' D& ?) |( n; i2 |% Q0 m/ ?
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
( m4 N2 O) M! ^3 s: B1 Y  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
' i  q% C. D5 H0 N! m( H, W, M  RCC_OscInitStruct.HSICalibrationValue = 16;: z, _- N8 `: F0 d4 H
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;( I# E* h; T8 d. u& O1 F. C
  HAL_RCC_OscConfig(&RCC_OscInitStruct);
0 G* j, H+ K* v! x# v0 T
+ d% h+ H7 G7 `8 h5 M7 O: r  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;- j% U% n9 l% c+ E
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
. g7 b+ h2 s/ q  R1 a4 M  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
$ Z& f- w5 m4 w+ ^8 U) f+ n  S& w  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
0 {. O. E5 b2 l. e  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
/ q; c" @9 W1 b4 r( b; K( |/ s* `; f/ z
  __SYSCFG_CLK_ENABLE();
2 r5 I5 N- m% e
( r1 m1 n& ?) _2 d2 r( B* ]! d}
) B$ X- F9 U' l+ a1 _6 y, o! n/ p- _0 M4 v9 A+ |$ B& N
/** Configure pins as
2 @* T2 \! G# E+ r" P& E) f        * Analog 5 e% t9 Q% A4 I' P- _* j& M
        * Input 9 I2 h& e1 _5 Z1 J( c/ O
        * Output+ o# P6 B( |2 K$ X
        * EVENT_OUT
  m6 ^7 h) X: ^+ w        * EXTI
# b; d. z8 ^# \9 O' d. T*/
# R* f. D% W5 `5 a' P9 l. L, D/ k1 nvoid MX_GPIO_Init(void)
1 W! ]- D" C: H5 J7 Q. c{; J! U1 n9 w. S. i* a' J1 s
( W# b7 d7 a9 ?1 I1 ]( U
  GPIO_InitTypeDef GPIO_InitStruct;  @4 Z8 w8 K$ Z0 C4 T2 D
) ~/ i. a4 f4 h
  /* GPIO Ports Clock Enable */
. p2 k) g' n! `( a, p  __GPIOA_CLK_ENABLE();! c& }/ v% \. n1 L  E# Z
4 H4 o' n% d& t/ s) d
  /*Configure GPIO pin : PA5 */" Y' `- R  T$ S4 l5 r
  GPIO_InitStruct.Pin = GPIO_PIN_5;
0 S( p6 N. ?$ m, a- n  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
' l& I& d5 x( C  GPIO_InitStruct.Pull = GPIO_NOPULL;. L5 l3 s9 X2 t  h5 @/ Z
  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;% N, W' Q% {+ G* O$ `( q
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
1 j* ]; W) N% X) ~; e, n
7 u. i& A  k" F}
9 z1 D: ?2 e( I: v, S$ ^( f! j) Y4 m! q3 K
/* USER CODE BEGIN 4 */$ K) d6 X) X# N* {0 V

, m1 `0 f; J7 _$ n/* USER CODE END 4 */9 S) S" P% w) A1 l4 F3 _$ |
" l' H9 x7 N# A: h5 O
#ifdef USE_FULL_ASSERT
9 O" Y0 v2 p; {0 h
7 _6 w3 W  C7 v, R% y& V2 {/**
/ q8 G" n6 d7 E+ V4 F1 `   * @brief Reports the name of the source file and the source line number# F8 T8 ^0 [1 o% I
   * where the assert_param error has occurred.
+ Z: k$ l! H( v  i: @   * @param file: pointer to the source file name5 ]( l2 W3 w/ w: p+ Z' @+ x- _
   * @param line: assert_param error line source number' P5 g- s/ }8 g; T
   * @retval None
, L* k  t9 w1 a0 |   */
1 J) A7 u3 ]$ @void assert_failed(uint8_t* file, uint32_t line)
7 S. j% p: S  j{
+ Z- K6 d% l) w  /* USER CODE BEGIN 6 */% j) F( I8 F3 @- H
  /* User can add his own implementation to report the file name and line number,8 Y6 o4 a+ @  C0 _" S# K
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
# G! ^; V. O2 P  ?  /* USER CODE END 6 */2 N4 v! y+ O- A$ g! X4 C: m5 U

* Q+ r8 n$ S) \0 v5 E4 p}
; m" d2 S2 v1 J( n
# {6 g# @$ m+ D4 D# T' T#endif
! j/ I* S; l! G9 ?* v9 z3 f+ d) M& B, Y! v
/**
' o: c  V8 ?' i$ ?: G  * @}
7 }9 M( _* I5 I/ z1 B  */
) M* T0 h( J9 R$ w3 l- m" M# M
0 @9 j9 k3 @; ?. ^# q/**  P3 [1 `$ \- @4 k% B* i
  * @}
/ `/ q/ g$ J5 Y$ X& Q7 A) p*/
% q2 \* H( R. l0 e+ o
1 \+ ]2 ^0 A8 _2 R/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
$ \2 q( I9 b8 {) u& _' ^0 o5 r! ~) W) [( m5 W

+ H3 s2 a5 l& F( g6 x3 m# y- `5 i
. O) E2 x0 Y2 d0 k1 R' E
收藏 评论2 发布时间:2014-12-26 11:14

举报

2个回答
沐紫 回答时间:2014-12-26 14:03:36
谢谢~通常来说,下一步就是按键了
yceast 回答时间:2014-12-27 16:49:11
是啊 按套路来

所属标签

相似分享

官网相关资源

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