stm-32学习心得

学习STM32的时候,自以为学的芯片越多就越厉害。其实,学习嵌入式重要的是整体的工程思想和项目经验积累,说到底这些芯片,我感觉学习起来都差不多吧,无非就是对内资源(寄存器、中断、定时器、串口等等),和对各种外设的操作而已,挂载的外设越多,系统会越复杂,这时可能会用上操作系统,同时,如果工程中涉及到各种算法、自动控制、采样、滤波等实际问题的时候,不仅会上操作系统,而且还对数学、物理、电路等方面知识要有较强的功底,对编程的能力的要求会更高,此时就要求对STM32的各种资源有比较明晰的了解了。

 

不得不说STM32真的是一款非常复杂的单片机,一直以来接触的IC SPI.USART等等也只是用了一些常用基本的功能,今天在PWM上也花了不少时间,用库函数的话也是基本的函数调用初始化PWM。不过因为对定时器理解不是很深入,今天回过头去看定时器的内容,理解好定时器频率、重装值对溢出时间的影响是十分重要的。感觉学习还是手握一-本相对详细的教材,单从视频例程和手册看来的知识比片面。越是强大的功能就越是需要复杂的技术来配置它,刚解除stm32的时候我一直再抱怨连用个I0口都如此繁琐, 其实我只是没有熟悉stm32的开发方式。不是每一行代码都得你自己去写,能复制粘贴实现功能也是自己的本事。

 

在学习stm32外设的时候应该注意一个很重要的事情, 我们应该在用一个工程中通过添加.C和h文件的形式来学习外设的使用,不可像学51那样一个工程一 个实验。 因为stm32功能众多我们做实验可能需要多个外设协同工作,做LCD现实实验可能我们需要ED现实状态,需要SPI连接传感器,需要key来控制状态。 我们把在学习的过程中就大胆地把各个外设封装成文件,当我们完成所有外设学习的时候,这个工程就是我们的一个模板工程。需要做项目的时候直接COPY出来,去粗取精,稍作修改就能直接使用。如此看来stm32的发开也会变得十分方便快捷,估计以后接触更先进的芯片也应该采用这样的学习开发模式。毕竟芯片是越来越先进的,规模也是越来越复杂,只有在学习的时候就写好一个属于你自 己的工程,日后做项目开发才能游刃有余。

以下是一个简单的STM32基础代码示例,它使用GPIO引脚控制LED灯的闪烁:

 

 

```c

#include "stm32f4xx.h"

 

int main(void)

{

  GPIO_InitTypeDef GPIO_InitStruct;

 

  // 开启时钟

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

 

  // 初始化GPIO引脚

  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;

  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;

  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;

  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;

  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;

  GPIO_Init(GPIOD, &GPIO_InitStruct);

 

  while (1)

  {

    // 点亮LED灯

    GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13);

 

    // 延时

    for (int i = 0; i < 1000000; i++);

 

    // 熄灭LED灯

    GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13);

 

    // 延时

    for (int i = 0; i < 1000000; i++);

  }

}

```

这个代码使用了STM32的GPIO库来初始化GPIO引脚,并使用`GPIO_SetBits()`和`GPIO_ResetBits()`函数来控制LED灯的闪烁。在无限循环中,程序点亮LED灯,然后延时一段时间,再熄灭LED灯并再次延时。这个过程将不断重复,使LED灯持续闪烁。

 

                                            20210320016-雷小虎

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜星ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值