当前位置: 首页 > news >正文

STM32开发方式

1.1 寄存器开发

学过51单片机的同学应该知道,51单片机教程都是讲解的寄存器开发,但是这种开发方式对于STM32就变得比较困难,因为STM32的寄存器数量是51单片机的十数倍如此多的寄存器根本无法全部记忆, 开发时需要经常的翻查芯片手册(找到对应的寄存器,在特定的比特位写入对应的值),直接操作寄存器就变得非常的费力了。但还是会有很小一部分人,喜欢去直接操作寄存器,因为这样更接近原理,知其然也知其所以然。

//基本流程 
//1.需求 通过gpio点亮LED2
//2.根据原理图-->对应的管脚 PC13
//3.根据芯片手册-->找到控制该管脚的相关寄存器 
       RCC_APB2ENR [4] = 1;  
       0x40021000+0x18
       GPIOC_CRH [23:20] = 0b 0010  //输出 2mhz 通用推挽
       0x40011000+0x4
       GPIOC_ODR [13]  = 0;   //输出低电平
       0x40011000+0xc
    
            
//4.编程实现
#define RCC_APB2ENR *(volatile unsigned int *)0x40021018
#define GPIOC_CRH   *(volatile unsigned int *)0x40011004    
#define GPIOC_ODR   *(volatile unsigned int *)0x4001100C    
int main(void)
{
    RCC_APB2ENR |= (0X1<<4);
           
    GPIOC_ODR |= (0X1<<13);   
    GPIOC_CRH &= ~(0XF<<20);
    GPIOC_CRH |= (0X2<<20);
    
    while(1){
        GPIOC_ODR &= ~(0X1<<13);  //低电平 点亮
        mydelay(1000);
        GPIOC_ODR |= (0X1<<13);   //高电平 熄灭
        mydelay(1000);
    }
}    

1.2 标准库

STM32有非常多的寄存器从而导致开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32f10x_xxx.c 和stm32f10x_xxx.h。开发者可以调用库里面的函数接口来配置STM32的寄存器以实现各种功能,这种方式使得开发人员不用直接去操作寄存器,提高了开发速度,代码更具可读性,方便维护。这也是目前最多人使用的方式。
//示例:
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能时钟
     //管脚的初始化
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;        //pin13
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  //低速
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
    GPIO_Init(GPIOC,&GPIO_InitStructure);
        
     while(1){
        GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET); //低电平 点亮
        mydelay(1000);
        GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);  //高电平 熄灭
        mydelay(1000);
     }

1.3 HAL库

HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序的开发时间。HAL的集成度更高,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F3上开发的程序移植到F4上是不能通用的,而使用HAL库可以实现。而且使用ST公司研发的STMcubemx软件,可以通过图形化方式进行功能配置(更加方便),直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下。

1.4 LL库

LL库,即STM32Cube Low-Layer,也叫Cube LL、Cube底层库。早在2014年,ST推出了STM32CubeMX这款工具,同步推出了对应的STM32Cube HAL库。但是,HAL存在一些问题:代码量大、执行效率低等缺点。因此,在2017年,ST推出了STM32Cube LL库,目的就是为了解决的HAL库的缺点,让开发STM32的工程师有更多的选择。

在这里插入图片描述

相关文章:

  • 本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)
  • idea + Docker + 阿里镜像服务打包部署
  • 【切割——最小公共质因数】
  • 17.C++类型转换
  • DeepSeek 开源周:DeepEP 项目详解,GPU 压榨计划启动!
  • 基于javaweb的SpringBoot健身房管理系统设计和实现(源码+文档+部署讲解)
  • 猿大师播放器:智慧交通Web网页低延迟播放监控RTSP H.265视频解决方案
  • 蓝桥杯之日期题
  • 【项目测试】博客系统—Selenium自动化测试、编写测试用例
  • JavaScript函数
  • 虚拟机 | Ubuntu 安装流程以及界面太小问题解决
  • 终端指令后续和shell脚本编程
  • linux 设置tomcat开机启动
  • Java包装类性能优化:深入解析Integer享元模式的源码实现
  • 一文掌握Selenium的详细使用
  • OpenCloudOS Server 9 安装openssl 1.1.x
  • 5个GitHub热点开源项目!!
  • 多媒体常用概念
  • 双重因子认证:守护数字安全的“双保险”
  • 我的AI工具箱Tauri版-FluxCharacterGeneration参考图像生成人像手办(Flux 版)
  • 专做品牌的网站/在线咨询 1 网站宣传
  • 如何在网站上做社交的链接/关键词在线听
  • 电子商务加盟网站建设/新网站怎么做优化
  • 免费的黄金网站有哪些/关键词快速上首页排名
  • 自己做网站怎么做的/企业营销网站制作
  • 郑州网站建设更好/厦门seo代理商