STM32-个人心得体会

这篇具有很好参考价值的文章主要介绍了STM32-个人心得体会。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

什么是STM32?

该怎么学STM32?

个人实践案例

总结


什么是STM32?

        1.概述

        在准备学习STM32之前,得知道什么是STM32,大家翻阅资料都知道STM32是意法半导体(STMicroelectronics)公司推出的一系列32位基于ARM Cortex-M内核的微控制器。它具有低功耗、高性能和丰富的外设资源,被广泛应用于工业控制、智能家居、汽车电子、消费电子等领域。STM32系列微控制器提供了不同的型号和系列,以满足不同应用场景的需求。

        2.优势

        相比于51单片机,STM32的优势在哪?51单片机是8位构架,而STM32具有32位构架,有着更高的计算能力和更大的地址空间,可以处理更复杂的任务和更大规模的应用。

        更丰富的外设资源:STM32微控制器集成了更多的外设资源,如高速串行通信接口、模拟数字转换器、定时器、PWM输出等。这使得STM32更适合处理复杂的通信、计时和控制任务。

        更高的性能:由于32位架构和更先进的内核设计,STM32微控制器具有更快的时钟速度和指令执行速度。这使得STM32可以更快地处理计算任务和实时应用。

        多核心支持:一些STM32系列(如STM32F4和STM32H7系列)支持多核心处理器,也就意味着可以同时运行多个任务,提高系统的并行处理能力。

        低功耗设计:STM32微控制器采用了先进的低功耗技术和智能省电模式,可以有效降低系统功耗,延长电池寿命。

        更多的开发资源和生态系统支持:STM32系列微控制器拥有庞大的开发者社区和广泛的生态系统支持,提供了丰富的开发工具、软件库和技术支持,帮助开发者快速进行产品开发和调试。

虽然51单片机在某些特定场景下可能仍然有优势,但总体上来说,STM32微控制器在性能、功能和可扩展性方面都更加出色,适用于更广泛的应用领域。

该怎么学STM32?

        1. 学习基础知识:了解STM32微控制器的基本原理、体系结构和外设资源。可以阅读相关的资料、参考手册和官方文档,建立起对STM32的基本认识和理解。那么在网上,有很多关于STM32的资料可以供大家翻阅。

        2. 选择开发板:当我们对于STM32有着一些了解之后,我们可以选择入手一块开发板,那么有动手能力的,我觉得可以自己来做一块开发板。

        3.安装编程环境:STM32主要使用C语言进行开发,还可选择使用其他的高级编程语言或者图形化编程工具。熟悉并选择使用适合的集成开发环境(IDE),如Keil uVision、IAR Embedded Workbench、STM32CubeIDE等。(我是用的Keil uVision来编程开发的)

        4.实践:那么当我们开发板和开发环境都准备好以后,我们可以选择来通过一些案例来进行学习,可以从LED闪烁、串口通信、蜂鸣器控制等基础项目开始,逐渐扩展到更复杂的应用,如电机控制、传感器数据采集等。

个人实践案例

        那么说了那么多主要是想让大家对于STM32有着大概的了解,本人也是刚学习的STM32,时间不长,有什么说的不对的,希望大家可以在评论下面纠正一下。

        给大家分享一下我最近做的一个小案例啊

        首先打开我们的Keil uVision编程软件,打开我们做好的案例。

学习stm32心得体会,stm32,单片机,嵌入式硬件

我这个案列是为了实现当我们按下开发板上的按键之后,LED亮,然后在串口输出LED亮或者闪烁的文本。

        首先我们要给LED初始化

        在led.h的工程文件下

        #ifndef __LED_H
        #define __LED_H     
        #include "sys.h"

        #define LED0 PEout(5)    // PE5
        #define LED1 PBout(5)    // PB5

        void LED_Init(void);//初始化

                             
        #endif

        给我们开发板上的管脚进行一个定义

学习stm32心得体会,stm32,单片机,嵌入式硬件

        定义完之后,在led.c工程文件下编写

        #include "led.h"

        void LED_Init(void)
        {
 
         GPIO_InitTypeDef  GPIO_InitStructure;
     
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB, ENABLE);     //使能PE,PB端口时钟
    
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                 //LED0-->PE5 端口配置
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO口速度为50MHz
         GPIO_Init(GPIOE, &GPIO_InitStructure);                     //根据设定参数初始化GPIOE.5
         GPIO_SetBits(GPIOE,GPIO_Pin_5);                         //PE5 输出高

         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                 //LED1-->PB5 端口配置, 推挽输出
         GPIO_Init(GPIOB, &GPIO_InitStructure);                       //推挽输出 ,IO口速度为50MHz
         GPIO_SetBits(GPIOB,GPIO_Pin_5);                          //PB5 输出高 
        }

 学习stm32心得体会,stm32,单片机,嵌入式硬件

        这边主要是调用了库函数,刚开始学的STM32我觉得是先从学会调用库函数开始。

        那么LED的配置好了之后,接下来轮到我们的按键

        在key.h工程文件下编写

        #ifndef __KEY_H 
        #define __KEY_H 
        #include "sys.h" 
 
        #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键1
        #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键2
        void KEY_Init(void);//IO 初始化 

        #endif

学习stm32心得体会,stm32,单片机,嵌入式硬件

 这里也是给我们的按键初始化,然后在key.c工程文件下编写

        #include "key.h" 
        #include "delay.h" 
        //按键初始化函数 
        //PA15 和 PC5 设置成输入 
        void KEY_Init(void) 
        { 
             GPIO_InitTypeDef GPIO_InitStructure;
             RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//使能 PORTE 时钟 
             GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//PE4 
             GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入 
             GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化 GPIOE.4 
     
             GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PE3
             GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入 
             GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化 GPIOE.3
            }

学习stm32心得体会,stm32,单片机,嵌入式硬件

 那么这里的按键配置也是完成了的,接下来看看我们的主函数

        #include "led.h"
        #include "delay.h"
        #include "sys.h"
        #include "usart.h"
        #include "key.h"

        int main(void)
        {
            delay_init(); //延迟函数初始化
            LED_Init();  //初始化与LED连接的硬件接口
            //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组2
            uart_init(9600); //串口初始化为9600    
            KEY_Init();  //初始化与按键连接的硬件接口
            LED0=1;
            LED1=1;
            while(1)
            {
                if(KEY0==0)
                {
                    LED0=0;
                    printf("LED0亮\r\n");
                    delay_ms(300);
                }
                if(KEY0==1)
                {
                    LED0=1;
                    delay_ms(300);
                }
                if(KEY1==0)
                {
                    LED1=!LED1;
                    delay_ms(500);
                    LED1=!LED1;
                    delay_ms(500);
                    printf("LED1闪烁\r\n");
                }
            }
        }

 学习stm32心得体会,stm32,单片机,嵌入式硬件

都编写好之后我们先编译一下

学习stm32心得体会,stm32,单片机,嵌入式硬件

编译没出错那么我们下载到我们的开发板看一下有没有实现功能

 学习stm32心得体会,stm32,单片机,嵌入式硬件

可以看到成功实现了功能嗷! 

总结

        那么如果说刚入门的可以通过调用库函数来进行一个实践案例进行学习,那么去了解库函数我觉得对于学习STM32上来讲还是有很大的帮助的。文章来源地址https://www.toymoban.com/news/detail-760198.html

到了这里,关于STM32-个人心得体会的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark心得体会

            学习了spark之后我才知道Hadoop和spark还有着这种缘分:Hadoop 是由Java语言编写的,部署在分布式服务器集群上,用于存储海量数据并运行分布式分析应用的开源框架;其重要组件有,HDFS 分布式文件系统、MapReduce 编程模型、Hbase 基于HDFS的分布式数据库:擅长实时随

    2024年02月11日
    浏览(25)
  • 近期参与开源的心得体会

    最近随着Kepler项目加入CNCF sandbox,写一篇blog来记录下参与这个项目半年的发展的心得体会。 项目的运营最好还是专注于项目自身的发展,围绕项目的特点,创新点入手,为大家提供价值,从而自然而然的扩大自身影响力。 我们的文档写的,并不好。这是Thoughtworks技术雷达对

    2024年02月11日
    浏览(78)
  • JAVA 实训报告心得体会

    一开始想做计算器那个课题,原因很简单,就是因为我感觉那个课题很简 单,在百度里一搜就搜到了一模一样的源程序。只是感觉没什么意思,那个界面也 不是很好看,又不好玩。所以就做了现在这个猜数游戏。一直想编个游戏程序,于 是就到网上去搜代码,一下子就搜到

    2024年02月13日
    浏览(28)
  • 实验心得,包括代码复现工作的体会

    实践是检验真理的唯一标准 resnet20,cifar100. Direct training: 和原论文一样的参数 64.45 time step 1, Accuracy = 0.5918 time step 2, Accuracy = 0.6320 time step 4, Accuracy = 0.6446 time step 8, Accuracy = 0.6531 time step 16, Accuracy = 0.6608 time step 32, Accuracy = 0.6631 和原论文69.97相差比较大。 加了部分预处理,参数

    2024年02月14日
    浏览(30)
  • 关于参加大学生挑战杯赛的心得体会

    CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:大学生竞赛指南 话题描述:本话题聚焦于大学生竞赛心得体会分享,对于计算机众多领域每年都有很多都会举办科技竞赛,很多学生也都会踊跃参与,每到竞赛结束,学生们都会收

    2024年02月06日
    浏览(29)
  • python课实训报告心得体会2000字

    大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧! 20192416 实验四 《Python程序设计》 综合实践报告 课程:《Python程序设计》 班级:1924 姓名:不愿透露姓名的はんたくさん 学号:20192416 实验教师:王志强老师 实验日期:

    2024年02月07日
    浏览(39)
  • Labview实现程序控制(有一篇心得体会)

    这次博客,我将刚刚所学的知识进行总结。如有不足,欢迎交流。 使用移位寄存器或反馈节点计算0+5+10+…+50的值 用顺序结构实现两数相加,同时实现两数相加后再乘以2。 使用条件结构实现5个LED轮流亮灭。 设计一个VI程序,前面板如下。单击确定,计数加1;单击停止,程序

    2024年02月09日
    浏览(26)
  • 大数据Hadoop完全分布式及心得体会

    Hadoop是一个 分布式系统 基础技术框架,利用hadoop,开发用户可以在不了解分布式底层细节的情况下,开发分布式程序,从而达到充分利用集群的威力高速运算和存储的目的;而在本学期中,我们的专业老师带我们学习了Hadoop框架中最 核心 的设计: MapReduce 和 HDFS 。 MapReduc

    2024年02月08日
    浏览(36)
  • 华为云CodeArts产品体验的心得体会及想法

    华为云作为一家全球领先的云计算服务提供商,致力于为企业和个人用户提供高效、安全、可靠的云服务。在其众多产品中,CodeArts作为一款全新的开发工具集,为开发者提供了一种全新的编程体验,以其强大的功能和简洁的设计风格受到了广大开发者的喜爱。 本文将对华为

    2024年02月16日
    浏览(28)
  • 浅谈对python的心得与体会2000字

    本学期,我们学习了杨老师的《python语言程序设计》这门课程,其实早在大一期间,通过谭老师的《计算机科学导论》就对Python语言有了初步的了解,也是从那时候开始,我也是深深的体会到了python语言的魅力所在——语法精简、功能强大。 相对于其他编程语言,python有以下

    2024年02月04日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包