0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带32位MCU和高精度ADC的SoC产品(二)

晶华微 来源:阿红呀 作者:阿红呀 2022-09-22 14:02 次阅读

01前 言

在开发指南(一)中我们介绍了示例程序的整体框架,从本章开始将会对使用到的模块进行详细介绍。本章我们主要对按键中断的一种简单用法进行讲解,参考应用手册第6、7章节。

02按键中断

因为外部中断和按键中断都被复用在GPIO上(KEY0~KEY6对应P00~P06),要优先设置GPIO为输入状态,而GPIO、外部中断和按键中断都属于外设功能,所以第一步还是先打开相应的外设时钟使能,接着初始化GPIO00~06的状态为输入上拉,然后进行按键中断配置初始化,最后打开按键中断使能,如下图1:

pYYBAGMr-U-AeSCiAAZBF-mB1iQ145.png

图1.按键中断配置初始化

按键中断初始化时,首先要写入正确的向量号,使能对应向量号的中断,然后根据应用需要配置中断优先级和优先级阈值。一般在程序中有多个中断使用时需要考虑中断优先级问题,在本示例程序SD93F115-JBS_TEST.zip中,中断优先级和阈值都设置为最高(因为我们是通过按键中断去选择需要执行的测试项,所以我们认为按键中断的优先级和阈值必须都是最高的),配置完成后便可打开按键中断使能,设置按键KEY0~KEY6作为按键输入。

按键中断基本配置完成后,就需要编写按键中断服务函数了。我们在lib的SD931X_it.c中找到按键中断对应的中断函数入口,编写按键中断服务函数(其他中断可在对应的中断函数中进行编写),如下图2:

pYYBAGMr-X6AEUbEAARcmwPZoRs121.png

图2.按键中断服务函数

进入按键中断服务函数,第一步先清除中断标志位,避免因忘记清除标志位导致系统反复进入中断(无论KEY0~6中的哪个按键触发的中断,都会置起KEYIF标志位);第二步是消抖,防止按键误触发(LCD显示会在后续章节进行说明);第三步便可通过读取GPIO0的输入数据寄存器GPIO0_IDR,去判断哪一个或哪几个按键处于按下状态(因为IO是被上拉的状态,所以在无按键按下时,寄存器结果应为0x7F,有按键按下时对应位为0)。

若寄存器结果与定义的键值Key0-Key6相同(见图3键值定义),则将对应测试项的标志位置1,其他测试项的标志位置0,否则程序直接退出中断。按键中断执行完成后,程序会跳出中断继续执行图4的while循环,而在循环中,我们通过不断监测各测试项的标志位是否置1来验证是否有按键按下,如此便可通过简单的按键操作进入不同测试项。

poYBAGMr-Z6AC_L-AADM_Ztox0I326.png

图3.键值定义

pYYBAGMr-aqACtOUAAJoK_w8-Go027.png

图4.while循环

03开发问题简析

开发阶段使用按键中断或其他中断遇到最多的问题就是中断不响应,要重点关注外设时钟是否打开、中断使能是否打开、对应模拟功能是否开启以及中断标志位是否判断正确。

04总 结

本文介绍了一种按键中断的简单用法,对按键中断的初始化和中断服务函数的编写的流程进行简单介绍。

示例程序:

SD93F115-JBS_TEST.zip

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16987

    浏览量

    350298
  • adc
    adc
    +关注

    关注

    98

    文章

    6430

    浏览量

    544079
  • GPIO
    +关注

    关注

    16

    文章

    1196

    浏览量

    51915
收藏 人收藏

    评论

    相关推荐

    32MCU高精度ADCSoC产品(三)

    在开发指南()中,我们简单介绍了按键中断的使用方法,由于示例程序的各个测试内容都有使用到LCD显示,所以本章先给大家讲解一下LCD显示的基本使用方法,参考应用手册第25章节。
    的头像 发表于 09-22 15:26 1532次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b><b class='flag-5'>产品</b>(三)

    32MCU高精度ADCSoC产品-SD93F系列开发指南(八)

    在开发指南(七)中,我们简单介绍了LBT模块中低电压检测功能的测试,本章我们讲解一下24高精度SD ADC的使用方法,详细寄存器资料参考应用手册第27章节。
    的头像 发表于 12-15 17:07 1241次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b><b class='flag-5'>产品</b>-SD93F系列开发指南(八)

    32MCU高精度ADCSoC产品-SD93F系列开发指南(九)

    在开发指南(八)中,我们给大家讲解了24高精度ADC—SD ADC,本章我们再给大家讲解12高速AD
    的头像 发表于 01-12 17:14 1765次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b><b class='flag-5'>产品</b>-SD93F系列开发指南(九)

    2 差分通道高精度ADC

    2 差分通道高精度ADC实时时钟,24*4 液晶的SOC特点 差分 2 通道或单端4 通道、高精度
    发表于 06-29 16:06

    鼎盛合科技芯片CSU18M88,SOC芯片集成高精度ADC和LCD显示模块

    单片机,集成了24Bit高精度ADC和LCD显示模块。内部集成8k*16Bits的MTP程序存储器。模拟特性:24分辨率内部集成的可编程增益放大器ADC的输出速率10Hz~5KHz内
    发表于 08-05 14:24

    基于高精度24ADC的电子血压计方案

    ,这样可以获得稳定的电压,为传感器信号采集创造条件。2.2 MCU MCU采用芯易德科技的SDI5229TS芯片,该芯片内部集成高精度24ADC
    发表于 05-06 14:29

    高精度ADC,高精度ADC是什么意思

    高精度ADC,高精度ADC是什么意思 目前,世界上有多种类型的ADC,有传统的并行、逐次通近型、积分型、压频变换型等,也有近年来新发展起来
    发表于 03-24 13:29 7235次阅读

    ADuC816:MicroConverter®,嵌入式闪存MCU的双通道16ADC产品手册

    ADuC816:MicroConverter®,嵌入式闪存MCU的双通道16ADC产品手册
    发表于 04-17 10:45 3次下载
    ADuC816:MicroConverter®,<b class='flag-5'>带</b>嵌入式闪存<b class='flag-5'>MCU</b>的双通道16<b class='flag-5'>位</b><b class='flag-5'>ADC</b><b class='flag-5'>产品</b>手册

    ADuC832:嵌入式62 kB闪存MCU的MicroConverter、12ADC和DAC产品手册

    ADuC832:嵌入式62 kB闪存MCU的MicroConverter、12ADC和DAC产品手册
    发表于 05-08 17:58 13次下载
    ADuC832:<b class='flag-5'>带</b>嵌入式62 kB闪存<b class='flag-5'>MCU</b>的MicroConverter、12<b class='flag-5'>位</b><b class='flag-5'>ADC</b>和DAC<b class='flag-5'>产品</b>手册

    32MCU高精度ADCSoC

    您在使用新款芯片和新的开发环境进行开发的过程中是否会遇到以下问题:如何快速建工程?如何快速上手编程?不了解芯片功能?实现功能和预期不符?
    的头像 发表于 02-22 10:34 1951次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b>

    24Bit ADC高精度低功耗MCU 医疗级别设备参考设计(附上高精确算法+电路原理图)

    及内置24高精度ADC,针对用于血压计芯片、血氧仪芯片及算法优势,提供了高性能、低功耗的单芯片解决方案。东微半导体DT5M4765R8L6开发板为24
    的头像 发表于 11-22 08:25 7697次阅读

    基于DT5M4765系列(MCU24高精度ADC+LCD驱动)开发的便携式血氧仪

    基于DT5M4765系列(MCU24高精度ADC+LCD驱动)开发的便携式血氧仪
    发表于 01-31 09:33 1126次阅读
    基于DT5M4765系列(<b class='flag-5'>MCU</b><b class='flag-5'>带</b>24<b class='flag-5'>位</b><b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>+LCD驱动)开发的便携式血氧仪

    HPM系列MCU 高精度ADC之误差分析和设计指南

    电子发烧友网站提供《HPM系列MCU 高精度ADC之误差分析和设计指南.pdf》资料免费下载
    发表于 09-19 15:45 10次下载
    HPM系列<b class='flag-5'>MCU</b> <b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>之误差分析和设计指南

    24高精度ADC MCT1247产品介绍

    MCT1247是24高精度ADC,该芯片不仅集成了低噪声PGA、单循环数字滤波器、高精度Δ-Σ AD转换器和内部振荡器等模块,还提供了内置低漂移基准电压以及两个匹配的可编程激励电流源
    的头像 发表于 01-07 10:40 1278次阅读
    24<b class='flag-5'>位</b><b class='flag-5'>高精度</b><b class='flag-5'>ADC</b> MCT1247<b class='flag-5'>产品</b>介绍

    领慧立芯LHA5657高精度32ΣΔ ADC产品介绍

    领慧立芯LHA5657高精度32ΣΔ ADC产品介绍
    的头像 发表于 08-28 16:44 360次阅读
    领慧立芯LHA5657<b class='flag-5'>高精度</b>32<b class='flag-5'>位</b>ΣΔ <b class='flag-5'>ADC</b><b class='flag-5'>产品</b>介绍