首页 > 其他分享 >STM32 库函数的学习1

STM32 库函数的学习1

时间:2024-12-26 13:02:20浏览次数:9  
标签:学习 函数 引脚 用到 STM32 的话 endif GPIO 库函数

        初始化函数,结构体的定义。一直用,不过还真不知道是个结构体呢,所以对结构体这个用法不熟练呢,近期学习正点原子的视频了解到了。

        h就是头文件函数库,结构就是:

        #ifndef  __LED_H__
        #define __LED_H__//如果没有定义,下面就定义一下,有的话就不进行下面的定义了。


        #endif

        其中LED可以根据需要定义,其他三个英文一起,就是防止多次定义。这个我只在头文件用到了,不过应该也可以在函数里面用到。

        引申有个#if 0   #endif,跟#if 1   #endif,“#if” 后面的0   表示到“#endif”位置 里面所有的函数不会被运行(这里的函数可以代替/* */,注释掉里面函数。);“#if” 后面的1    表示到“#endif”位置里面的函数会被运行(这里的函数就相当于把/* */去掉,恢复正常函数。)。这里我比较喜欢用,毕竟如果我们需要注释掉的函数不运行的时候,直接改成0,那样可以继续编写其他函数,如果需要在用到的话,就改成1就好了。

        如果使用“//”的话就不能收起来,查看的时候中间会隔很多行。

        如果使用“/* */”的话,虽然可以收起来,但是如果后面设计过程,需要用到来测试的话,可能会出现意外,行少的话还知道另一半在那里,但是如果超过屏幕显示,而且很多行的话,也为了以后作为参考不便于删掉,就可能找不到,容易出现错误。

        所以用#if    #endif的话很方便,使用的时候变成1,而且如果是测试函数的话也知道,编写的时候可以弄一些参考函数在里面,以后如果要用的话可以直接知道是那些。

        对于跑马灯的实验设置中的亮灭用到的下面函数,根据外面电路来确定使用哪个函数来点亮灯。

        GPIO_SetBits(GPIOx,GPIO_Pin_x)//这个是输出高电平,如果led灯接到地的话,可以使用这个来电亮。

        GPIO_ResetBits(GPIOx,GPIO_Pin_x)//这个是输出低电平,如果led灯接到电源的话,可以使用这个来电亮。

        这个在运行时候可以设置管脚高低电平,并用万用表来检查输出是0还是3.3v,来确认单片机的外围电路是否正常,之前我遇到过使用这两个函数,测量单片机管脚,结果电压没变化,而且查找电路也没有问题,后来才发现设计电路的时候用到了PB4端口。这就提到了PB3、PB4、PA15、PA13和PA14这几个管脚的问题了,它们默认不是I/O口,我们如果要用到的话,需要重映射一下。这里我查了一下是三种模式:

        ①GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//这种重映射情况就是把PB3、PB4、PA15这三个引脚用作普通GPIO,而把PA13和PA14这两个引脚用作SWD的调试功能。    

        ②GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);//这种重映射情况是把这五个引脚全部用作普通GPIO,因此将不能再用JTAG/SWD仿真器进行调试,但可以使用ST-LINK。

        ③GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);//这种重映射情况下仅仅把PB4这一个引脚作为普通GPIO,JTAG/SWD可以正常使用,但是JTAG没有复位功能。

        我只用到了第二项,毕竟我设计的使用会用到SWD的调试功能的,所以PA13和PA14是重来没作为I/O使用的。

        而且可以使用 GPIO_SetBits(GPIOx,GPIO_Pin_x)跟GPIO_ResetBits(GPIOx,GPIO_Pin_x)来确认是否变成I/O口,能否控制高低电平来确认函数是否正确。

        至于寄存器版本,我觉得了解一下就好,我也不怎么用,所以也就不描叙出来了,而且学起来还真记不太住呢。

        补:基本上都是我结合以前研发时候遇到的一些问题,加上学习到自己了解的。如果出错的话,应该是我后面在学到新知识以后再回来修改吧

标签:学习,函数,引脚,用到,STM32,的话,endif,GPIO,库函数
From: https://blog.csdn.net/esmember/article/details/144736034

相关文章

  • 开展深度学习项目所需要的数学基础|入门书籍·24-12-25
    小罗碎碎念深度学习作为一种复杂的机器学习方法,其核心在于构建和训练多层神经网络模型。为了深入理解和有效应用深度学习技术,掌握一定的数学基础是必不可少的。那么,**深度学习需要哪些数学基础呢?深度学习中的数学难点又在哪里?**这些问题常常困扰着初学者。在网络和书籍......
  • Java学习,文件写入
    Java中文件写入是一个常见的任务,可以使用java.io包中的类来实现这一点。需要注意,写入文件需要写入文件的权限,需要指定文件位置,绝对路径或相对路径来指定。使用FileWriter与BufferedWriter写入文件:importjava.io.BufferedWriter;importjava.io.FileWriter;importjava.io......
  • Java学习,continue关键字
    Javacontinue语句用来结束当前循环,并进入下一次循环,不是所有循环结束了。Java中continue关键字用于跳过,当前循环迭代中的剩余代码,并立即开始下一次迭代。它通常与循环结构(如 for、while 或 do-while)一起使用,不与switch语句一起使用。for循环使用continuepublicclassCo......
  • Java学习,读取文件内容
    Java中读取文件内容,是一个常见的任务,可以使用java.nio.file包中的Files类和Paths 类,或者使用java.io包中的BufferedReader和FileReader类来实现。使用Files和Paths,读取文件内容:importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Paths;import......
  • 学习前端时做的一个博客的模板psd2html代码
    链接:https://files.cnblogs.com/files/blogs/779648/%E5%8D%9A%E5%AE%A2.zip?t=1735182491&download=true总结:1、制作过程中会使用ps切片切出有些需要的图或者图标。2、需要纯手写css,html代码,某些css代码可以参考ps图层的css复制。3、可先按页面布局写好网页中容器【div,cs......
  • (2-3-03)目标检测与分割:基于深度学习的分割方法
    2.3.5 基于深度学习的分割方法随着人工智能技术的发展和普及,我们也可以使用相关技术实现目标检测与分割功能功能。在现实应用中,基于深度学习的常用分割方法如下。(1)PointSeg:使用PointNet进行点云分割,可以将点云中的不同目标分割出来。(2)PointCNN:使用深度学习方法对点云进行......
  • 计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • STM32-I2C软件模拟
    1.I2C介绍I2C是一种多主机、两线制、低速串行通信总线,广泛用于微控制器和各种外围设备之间的通信。它使用两条线路:串行数据线(SDA)和串行时钟线(SCL)进行双向传输。2.时序启动条件:SCL高电平时、SDA由高电平变为低电平停止条件:SCL高电平时、SDA由低电平变为高电平除此之外,不允许......
  • GO 学习笔记之五 编程(三)单元测试 ( VSCODE工具运行 )
    一、目的   当本地写好了一个go文件之后,希望通过单元测试来验证写的go文件中代码逻辑是否正确,减少后期发现问题成本。本案例介绍如何在VSCODE工具中触发执行和单点debug执行单元测试函数(注意:VSCODE工具有一个致命不好的点就是慢)二、编写单元测试  假设:当前业务逻辑go......