【复旦微FM33 MCU 外设开发指南】外设篇1——GPIO

2024-08-26 01:36

本文主要是介绍【复旦微FM33 MCU 外设开发指南】外设篇1——GPIO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

本系列基于复旦微FM33系列单片机的DataSheet编写,旨在提供一些开发指南。
本文章及本系列其他文章将持续更新,本系列其它文章请跳转【复旦微FM33 MCU 外设开发指南】总集篇

本文章最后更新日期:2024/08/25

文章目录

  • 前言
  • GPIO工作时钟
  • GPIO工作模式
    • 1. GPIO输入
    • 2. GPIO输出
    • 3. 数字功能
    • 4. 模拟功能
  • 上拉和开漏
  • GPIO外部中断
    • 1. 选择中断触发引脚
    • 2. 选择中断触发边沿
    • 3. 使能外部中断数字滤波
    • 4. 外部中断服务函数
  • 时钟输出引脚FOUT
  • 寄存器

GPIO工作时钟

对GPIO的寄存器操作前,必须通过 RCC->PCLKCR1 寄存器的配置使能时钟,否则无法写入寄存器。
在这里插入图片描述

GPIO工作模式

GPIO的工作模式通过GPIOx->FCR寄存器配置。
GPIOx->FCR 寄存器每2Bit对应一个GPIO的工作模式,即每个GPIO可以从4种工作模式中选择。

1. GPIO输入

要将GPIO配置为“GPIO输入”功能,需要把对应引脚的 GPIOx->FCR 寄存器相应位配置为00,并且要将 GPIOx->INEN 的对应位配置为1。
GPIOx->FCR 寄存器中,每个GPIO对应位的默认值为00,但上电后引脚默认为输入功能是不合适的,因此需要有一个额外的寄存器来控制输入功能的开启)

在该工作模式下,引脚的电平状态由外部决定,可以通过GPIOx->DIN寄存器读取当前引脚的电平状态。
这里指的电平状态是有施密特特性的,即有两个电压比较阈值,引脚高于较高的比较阈值则认为是高电平,低于较低的阈值则认为是低电平,在两个比较阈值之间,则保持原来的状态。

2. GPIO输出

要将GPIO配置为“GPIO输出”功能,需要把对应引脚的 GPIOx->FCR 寄存器相应位配置为01。
在该工作模式下,引脚的电平由MCU决定,有三个相关的寄存器可以改变引脚电平状态:
(1) GPIOx->DSET 当相应位为1时,该引脚输出高电平
(2) GPIOx->DRST 当相应位为1时,该引脚输出低电平
(3) GPIOx->DO 当相应位为1时,该引脚输出高电平;当相应位为0时,该引脚输出低电平

为什么要设置三组寄存器,DataSheet上给出了解释:
在这里插入图片描述

3. 数字功能

要将GPIO配置为“GPIO输出”功能,需要把对应引脚的 GPIOx->FCR 寄存器相应位配置为10。

在使用数字功能时,要注意有的引脚需要配置 GPIOx->DFS 寄存器。这是因为:
(1)一些引脚的复用功能可以通过GPIO功能来区分:例如PD2引脚同时作为ADC和UART的引脚,其中ADC为模拟外设,UART为数字外设,当使用ADC的时候将引脚配置为模拟功能,当使用UART的时候将引脚配置为数字功能。
(2)一些引脚的复用功能无法通过GPIO功能来区分:例如PB3引脚同时作为ATIM(高级定时器)和UART的引脚,ATIM和UART都为数字外设,在作为ATIM和UART使用时,都需要将引脚配置为数字功能;当使用ATIM时,要将DFS寄存器的对应位配置为1,但使用UART时,要将DFS寄存器的对应位配置为0。
在这里插入图片描述

4. 模拟功能

要将GPIO配置为“模拟功能”功能,需要把对应引脚的 GPIOx->FCR 寄存器相应位配置为11。
比如要使用ADC或者运算放大器(OPA),就需要将GPIO配置为模拟功能。

上拉和开漏

GPIO的上拉使能通过 GPIOx->PUEN 来控制、GPIO的开漏使能通过 GPIOx->ODEN 来控制。
芯片内部的上拉驱动能力很弱,用于将引脚在悬空状态下钳位在高电平。

GPIO外部中断

FM33LC0最多可以产生16个外部中断,每个外部中断都对应着引脚号,如下图所示:
在这里插入图片描述
以EXTI[0]为例,只能从PA0-PA3之间选择一个引脚作为EXTI[0]的中断触发源。

1. 选择中断触发引脚

中断触发源对应的引脚选择要通过 GPIO->EXTISEL 寄存器配置
在这里插入图片描述

2. 选择中断触发边沿

外部中断触发边沿要通过 GPIO->EXTIEDS 寄存器配置,可以选择上升沿触发/下降沿触发/双沿触发。
外部中断默认是关闭的,即相应的边缘触发选择为disable。
在这里插入图片描述

3. 使能外部中断数字滤波

外部中断数字滤波的使能要通过 GPIO->EXTIDF 寄存器配置。

外部中断是直接根据引脚的电平状态变化来触发的,因此当外部存在干扰时,很有可能导致外部中断的错误触发。
这种情况下,可以使能外部中断的数字滤波功能,可以降低该情况出现的概率。
(但也很容易受干扰,因此要谨慎使用外部中断;更建议定时读取引脚电平的方式来判断电平的变化,这样软件可以加滤波)

使能数字滤波后,当连续三个时钟周期(可以选择APBCLK或LSCLK)都采集到相同的电平时,才认为是合法的电平输入。在这里插入图片描述

4. 外部中断服务函数

当产生外部中断事件时,如果全局中断、外部中断未被关闭,则会进入对应的中断服务函数中。
在这里插入图片描述
进入中断服务函数后,必须要读取 GPIO->EXTIISR 寄存器,判断是哪个外部中断导致的GPIO中断。

时钟输出引脚FOUT

FM33LC0的PB12PD11是时钟输出引脚(FOUT)。时钟输出引脚可以帮我们检查时钟频率、排查MCU问题等。
要使用FOUT输出,需要配置 GPIO->FOUTSEL 寄存器。如图所示,可以输出16种时钟。
在这里插入图片描述

寄存器

在这里插入图片描述

这篇关于【复旦微FM33 MCU 外设开发指南】外设篇1——GPIO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107176

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧