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

STM32G030C8T6点亮LED程序V0.1(三)

[复制链接]
STMCU小助手 发布时间:2022-10-12 16:22
学习一款芯片,首先从点亮一颗LED开始,本程序基于RIBEE_02电路开发板,点亮一颗LED灯,驱动管脚为PD0。扩展实训中增加蓝灯闪烁代码。! E1 i3 c. `1 T1 B0 \$ ^6 G8 N

- B+ |3 U/ h+ Y, _2 f1.上芯片管脚图' u- |8 b; o6 `6 C

$ ^) ^+ F9 g& Y2 K9 @ c79aff61b39c451894c7c82812f3cdb3.png
! {8 N! o! w% X: c* \# X7 j( P
+ N8 C2 O$ w2 Z. |+ N, d: a4 [5 N+ L" f5 q/ }) L
2.配置晶振,启用内部晶振,失能外部晶振。
; d* z  K7 z' r. E7 L: V( K) {( Y5 j+ x( F
ffffcf44821b4ac4893477daf0720168.png
9 ?3 n) k# d5 q6 a& e3 Q5 l: a+ l9 r: g; h, v8 I
3.配置晶振,倍频与分频,外设基础时钟配置为64MHZ。; `' V* d/ L0 h4 H8 I8 W
: n7 a( D" g/ w9 X4 Z
63a00206a2214e62b69b0cd997419b0e.png 7 W' D9 s: L5 W) ?+ O, m" b. L) h) n

" b* h: O: G7 q9 J  x) h5 C 3.配置GPIO PD0管脚
/ g9 D$ C  k4 W" c) e6 Z0 ]. b0 ?1 m& W- T3 u* C# b5 b
4e92b052a084422e8f06a98f0d23a9d5.png
8 e2 r+ {- }% r! j7 U  }
: q4 [; C: r, @! e+ f/ q 4.直接上程序代码:3 O9 ?" N- V! s5 x" t  `
& }, z/ ^7 J6 o
  1. #include "main.h"* s- G  K, m. `- W0 f" }
  2. void SystemClock_Config(void);& s4 [5 m# E' ?3 E3 F. J
  3. void GPIO_Init(void);3 }9 d5 G( b# t# F/ o6 ~
  4. int main(void)
    & E, J% `  z, S1 {
  5. {
    5 y* g8 w% c) I+ i! ]) V5 A: ]4 S
  6.   HAL_Init(); //HAL库初始化
    1 U$ I3 _0 _( V7 H% C* ?
  7.   SystemClock_Config();//系统时钟初始化3 B& |' E6 Y7 y0 U% c. |1 x' g
  8.   GPIO_Init();//外设GPIO初始6 d  N$ A& t, Q' }8 l- {) I9 N
  9.   while (1)4 d. d2 k: f% J- [; Z6 o) W
  10.   {  h2 ]: q- p' f# k  a
  11.    HAL_GPIO_WritePin(PD0_GPIO_Port, PD0_Pin, GPIO_PIN_SET);//BLUE LED ON 蓝灯亮
    ; a. H5 Q& H4 t. s% z8 i( d  {: r
  12.   }1 a/ K  u% |/ C
  13. }
    " s0 B! i5 i7 z' E
  14. void SystemClock_Config(void)
    ; E# D4 y, s0 K  R' Q" e
  15. {
    0 f+ j7 g: U; V6 m( q( M
  16.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    & V4 u, l& ]: V. P' f
  17.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
    & Z- C4 z: S% Z9 F9 N$ z+ h
  18.   HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
    & C3 E2 [; Z, j
  19.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    4 R* y7 v" Y8 R
  20.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;& h$ o' O2 C* [. D% h* w
  21.   RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
      |# r! r, l& F! I# p
  22.   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
      @) s; [. v- `9 n
  23.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    6 q7 ]; b4 K' |
  24.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
    3 [$ S5 J" P( w
  25.   RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
    & ~/ T2 d* J8 J8 Z# `& y/ E
  26.   RCC_OscInitStruct.PLL.PLLN = 8;. m( v# [# M0 p( h2 j
  27.   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;$ ~7 G9 Q! D& H* X) M1 ?
  28.   RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;% m8 y. q# a% `$ x! N& D& N9 Z
  29.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)$ G9 L6 n$ o! [3 Z) Y( z
  30.   {
    1 |$ ^) e9 `! I# E4 Q
  31.     Error_Handler();
    ( O, X4 [: K4 X' D! a
  32.   }6 f' x  `( _! ?
  33.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK- k% h' y% Z' Z$ G, ^( |
  34.                               |RCC_CLOCKTYPE_PCLK1;
    8 ^3 {) f* p, w% Q7 }: _
  35.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;( ~/ o# D4 t# V, f/ k. R$ P
  36.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;& \1 Q) ]2 e* H: Z- L3 y+ y/ O8 p
  37.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;! _, u/ Z8 ?  E2 x, f% z* Y# R
  38. 5 ]7 D/ J0 G/ Y
  39.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)% a0 b1 N; A/ v' m/ t% G3 i# q8 m$ X
  40.   {( s; w! q" S3 q# _9 K0 Q
  41.     Error_Handler();% j- i( W+ l0 m6 S) G
  42.   }
    # x% M; B) D* M$ U* f; |
  43. }( L, m2 e# A4 D4 }
  44. void GPIO_Init(void)
    ) a; P# Y' o5 @/ a( n7 v
  45. {
    * A& e# j7 m9 i5 f# J9 Z/ j
  46.   GPIO_InitTypeDef GPIO_InitStruct = {0};  r* U! A& Z/ u  X$ e- C  D
  47. 9 f6 b2 R7 Z! ], }
  48.   __HAL_RCC_GPIOA_CLK_ENABLE();
    , A4 M& L4 G7 Z4 e% r
  49.   __HAL_RCC_GPIOD_CLK_ENABLE();
    : n, v" t5 j0 J/ x$ B# s

  50.   Q+ S1 o$ C4 E2 S
  51.   HAL_GPIO_WritePin(PD0_GPIO_Port, PD0_Pin, GPIO_PIN_SET);
    . K& h& X# y# ~2 H. H- A

  52.   m7 ]4 s1 p4 D; I# W* ^' Q. |& R' W
  53.   GPIO_InitStruct.Pin = PD0_Pin;
    5 Q8 g: m4 `' s, N$ d
  54.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;1 q: F! `7 u% @/ U! ^6 N$ X) B+ `
  55.   GPIO_InitStruct.Pull = GPIO_PULLUP;
    5 d  J3 y: m( m, h. |, k# [
  56.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;- |. a) b) p! k
  57.   HAL_GPIO_Init(PD0_GPIO_Port, &GPIO_InitStruct);4 U) P2 u( N0 O- B4 f

  58. ' }7 [5 T( N. t1 g  z% {/ j& G
  59. }
    2 o; d1 t: H% E) S" p# e+ p/ u
  60. void Error_Handler(void)
      l$ T/ ~6 g1 U' `; h
  61. {
    / V0 u( y2 C3 z# ~6 C$ Z) P
  62. }
    . w; g* m0 J. S, J
  63. #ifdef  USE_FULL_ASSERT
    6 b& d, M1 I6 S" p9 O& P5 T& m
  64. void assert_failed(uint8_t *file, uint32_t line)0 U( ~$ r  P. H, K  J% d- u
  65. {" `7 C6 i0 |: X; F  }' v
  66. }. @0 P- S) [6 Z' n
  67. #endif /* USE_FULL_ASSERT */
复制代码
6 N( u1 r7 n: [6 P7 O
编译仿真,即可点PD0处的蓝灯。
  {/ B2 y. S% y; P& R7 J- i( k1 ?. @, Y( F5 E3 ^- j
本例中需注意:在MAIN.H中宏定义    #define PD0_Pin GPIO_PIN_0
% @' M# O* [& U0 c- D* y                                                            #define PD0_GPIO_Port GPIOD4 y- n4 @4 j# u
# G7 H( O' R8 \, ]; z
5.扩展实训
/ Q: K1 _0 c$ w4 N# h& a. o
) e0 x" [' h) X0 D) p; o- b   让蓝灯闪烁:
+ N+ T9 k- p: d9 j
( ?* ?, t. d- h! x0 ^" w! N
  1.     while (1)
    1 a$ N; M) E3 m- ]
  2.       {* Y6 E0 Z  v3 Q% K* M
  3.        //HAL_GPIO_WritePin(PD0_GPIO_Port, PD0_Pin, GPIO_PIN_SET);//BLUE LED ON 蓝灯亮2 ?3 u& c7 A0 T, D; h
  4.         HAL_Delay(1000);: J. }- w! s  @- @  H
  5.         HAL_GPIO_TogglePin(PD0_GPIO_Port, PD0_Pin);//取反
    ! M. O: k& s) f8 F
  6.        }4 }& m: F% z* t" j
复制代码
: {0 T9 g4 B" O5 M
6.HAL库中GPIO控制:
* h/ S8 e$ x1 M) d. P) n
: }& b/ l/ u- V
  1. /* IO operation functions *****************************************************/
    * B' h! z$ V! s  X3 c
  2. GPIO_PinState    ' P4 c4 R- W8 v; ]

  3. 0 S6 P7 b& n6 ]5 V+ Y6 g
  4. HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);  //读GPIO& m6 Z- C. b8 d! y9 @9 P8 D
  5. HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);//写
    * ^  |3 Q2 K3 X- S0 n
  6. HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//取反GPIO
    : f/ y5 ^" o- R
  7. . M  G; I1 f  y& m. H

  8. 6 g( x( M8 C5 u
  9. HAL_StatusTypeDef
    0 P2 _) ]8 Z( a0 Q
  10. 0 g. o# v! s- m; G
  11. HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//锁住管脚电平
    8 h: \9 ~5 }8 T( Q3 D- k: I  P
  12. HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);//外部中断管理函数 清外部中断/ s# {. K3 J7 P% {6 X
  13. HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin);//中断回调函数  R0 t4 m$ ^2 |$ m( \1 K2 d" _
  14. HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin);//中断回调函数
复制代码
7 v' n: z- y! I, K: |8 {! `% J
————————————————# b4 g6 }5 p% `2 m6 R9 \
版权声明:米蜂科技
1 n) N) e, d0 k1 Z
4 s  `: r- h: C) b) g7 N+ c
05d6fa242d1246a6b8a009e6e1736cb1.png
赞 收藏 评论0 发布时间:2022-10-12 16:22

举报

0个回答

所属标签

相似技术帖

官网相关资源

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