嵌入式作业6

news2024/12/26 11:26:40

1、利用SysTick定时器编写倒计时程序,如初始设置为2分30秒,每秒在屏幕上输出一次时间,倒计时为0后,红灯亮,停止屏幕输出,并关闭SysTick定时器的中断。

2、利用RTC显示日期(年月日、时分秒),每秒更新。并设置某个时间的闹钟。闹钟时间到时,屏幕上显示有你的姓名的文字,并点亮绿灯。

3、利用PWM脉宽调制,交替显示红灯的5个短闪和5个长闪。

4、GEC39定义为输出引脚,GEC10定义为输入引脚,用杜邦线将两个引脚相连,验证捕捉实验程序Incapture-Outcmp-20211110,观察输出的时间间隔。

四、程序源码

实验1:

使用systick定时器编写倒计时程序:、

根据要求:

Z执行源代码:

//includes.h

//(用户增加)

G_VAR_PREFIX vuint8_t  cTime[3];

G_VAR_PREFIX vuint8_t  ctime;

G_VAR_PREFIX vuint8_t  ltime;

G_VAR_PREFIX vuint8_t  gtime;

//isr.c

void SysTick_Handler()

{

       //printf("***\n");

       static uint8_t SysTickCount = 0;//初始化为技术0

       SysTickCount++;    //Tick单元执行递增操作

       wdog_feed();      //对看门狗进行投喂操作

       if (SysTickCount >= 100)

       {

              SysTickCount = 0;

              gtime = gTime[0]*3600 + gTime[1]*60 + gTime[2];

              ltime = ctime - gtime;

              cTime[0] = ltime / 3600;

              cTime[1] = (ltime - cTime[0] * 3600)/60;

              cTime[2] = ltime- cTime[0] * 3600 - cTime[1] * 60;

              SecAdd1(gTime);

             

       }

}

//main.c 

       ctime = 61;     //总倒计时

     ltime = 0;

     cTime[0] = 0;       //时

     cTime[1] = 0;       //分

     cTime[2] = 0;       //秒

       gpio_init(LIGHT_RED,GPIO_OUTPUT,LIGHT_OFF);    //初始化红灯

       for(;;)     //for(;;)(开头)

    {

            if (gTime[2] == mSec) continue;

            mSec=gTime[2];

           

            if(ltime != 0){

                   printf("%d:%d:%d\n",cTime[0],cTime[1],cTime[2]);//打印时间

            }else{

                   printf("32106100129梁毅轩,红灯亮");

                   gpio_set(LIGHT_RED,LIGHT_ON);

                   for(;;) {  }

            }

    }    

二:利用RTC显示日期(年月日、时分秒),每秒更新。并设置某个时间的闹钟。闹钟时间到时,屏幕上显示有你的姓名的文字,并点亮绿灯。

根据要求:

代码为:

//isr.c

void RTC_Alarm_IRQHandler(void)

{

      

       if(RTC_Alarm_Get_Int(A))            //闹钟A的中断标志位

       {

              gpio_init(LIGHT_GREEN,GPIO_OUTPUT,LIGHT_OFF);

              RTC_Alarm_Clear(A);       //清闹钟A的中断标志位

              printf("闹钟A已经执行!\n");

              gpio_set(LIGHT_GREEN,LIGHT_ON);//点亮绿灯

              printf("32106100129梁毅轩\n");//打印我的学号以及姓名

       }

       if(RTC_Alarm_Get_Int(B))            //闹钟A的中断标志位

       {

              RTC_Alarm_Clear(B);       //清闹钟A的中断标志位

              printf("闹钟B\n");

       }

      

}

//main.c

uart_init(UART_User,115200);

    RTC_Init();         //RTC初始化

       RTC_Set_Time(16,51,0);         //设置时间为16:50:0

    RTC_Set_Date(24,6,1,6);  //设置日期

//(1.6)使能模块中断

    RTC_PeriodWKUP_Enable_Int();                               //使能唤醒中断

    uart_enable_re_int(UART_User);

    RTC_Alarm_Enable_Int(0);

       RTC_Set_Alarm(0,6,16,52,0);

三:利用PWM脉宽调制,交替显示红灯的5个短闪和5个长闪。

uint8_t flag = 1;

if ((mFlag==1)&&(Flag==1))//设定标志位

                {

                        // 高电平亮

                    Flag=0;

                    m_K++;

                    //小灯反转

                    gpio_reverse(LIGHT_RED);

                    if(flag==1){

                      Delay_ms(1000);

                      printf("第%d次长闪\n",i);

                        flag=0;       

                              continue;

                    }

                    flag=1;

                    printf("第%d次短闪\n",i);

                }

四:GEC39定义为输出引脚,GEC10定义为输入引脚,用杜邦线将两个引脚相连,验证捕捉实验程序Incapture-Outcmp-20211110,观察输出的时间间隔。

直接通过连线观察时间间隔

五、运行结果

用适当的文字、截图、图片等描述实验的结果。

 实验内容一:

编写计时程序,在倒计时结束点亮红灯

倒计时结束,输出

二:

设置闹钟:

并且打印出来:

三:

四:

通过观察,时间间隔越来越短

实验图片:

  • 倒计时结束点亮红灯:

二:闹钟执行点亮绿灯:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1809592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[C++数据结构之看懂就这一篇]图(上)

📚博客主页:Zhui_Yi_🔍:上期回顾:JAVA面向对象(上)❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️🎇追当今朝…

币安用户达2亿,代币BNB创新高,赵长鹏成“美国最富囚犯” 苹果迈向AI新纪元:芯片、应用与大模型三线作战

赵长鹏坐牢第一个月,越坐越富。 在币安联合创始人赵长鹏入狱服刑的第一个月,币安代币BNB创下了历史新高,使得赵长鹏成为美国联邦监狱中史上“最富囚犯”。与此同时,币安用户数量也到达2亿“里程碑”。 根据CoinGecko的数据&…

从河流到空气,BL340工控机助力全面环保监测网络构建

在环保监测领域,智能化、高效率的监测手段正逐步成为守护绿水青山的新常态。其中,ARMxy工业计算机BL340凭借其强大的处理能力、高度的灵活性以及广泛的兼容性,在水质监测站、空气质量检测、噪音污染监控等多个环保应用场景中脱颖而出&#xf…

解决阿里云的端口添加安全组仍然无法扫描到

发现用线上的网站扫不到这个端口,这个端口关了,但是没有更详细信息了 我用nmap扫了一下我的这个端口,发现主机是活跃的,但是有防火墙,我们列出云服务器上面的这个防火墙list,发现确实没有5566端口 参考&a…

Java(十七)---ArrayList的使用

文章目录 前言1.ArrayList的简介2. ArrayList使用2.1.ArrayList的构造2.2.ArrayList的扩容机制(JDK17) 3.ArrayList的常见操作4. ArrayList的具体使用4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)4.2.简单的洗牌游戏 5.ArrayList的问题及思考 …

RocketMq详解:二、SpringBoot集成RocketMq

在上一章中我们对Rocket的基础知识、特性以及四大核心组件进行了详细的介绍,本章带着大家一起去在项目中具体的进行应用,并设计将其作为一个工具包只提供消息的分发服务和业务模块进行解耦 在进行本章的学习之前,需要确保你的可以正常启动和…

每天写java到期末考试(6.10)--java小项目01

实现项目任务 java类 package java1;import java.util.ArrayList; import java.util.Scanner;public class Test {public static void main(String[] args) {//8.创建一个集合,用于存放相同个体,一个个添加,注意作用范围,将数组放…

为Nanopi m1交叉编译opencv

为Nanopi m1交叉编译opencv 一、下载交叉编译器 根据之前的博客进行 二、下载opencv和必要库 sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devgit clone https://github.com/opencv/opencv.git cd opencv三、进行编…

纯理论容器实现的原理

近期在复习容器的原理,希望这篇文章可以帮助到大家。 一、什么是容器? 容器本质上就是主机上的一个进程。这个进程拥有自己的用户空间并且和主机共享内核空间。 容器内的进程可以通过系统调用与内核进行交互,使用内核提供的各种功能和资源。…

达梦数据库搭建守护集群

前言 DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾&#xff09…

速度位置规划实现精确定位的问题

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

NettyのBufferChannelSelector用法

这一篇介绍Buffer&Channel&Selector的常见API使用案例 1、Buffer 1.1、从Buffe中读取/写入 以ByteBuffer为例。Buffer需要和Channel结合使用(在上一篇中提到,通道是数据传输的载体,缓冲区是数据的临时存储区)。 那么如何…

44【Aseprite 作图】樱花丸子——拆解

1 枝干 2 花朵:其实只要形状差不多都行,有三个颜色,中间花蕊颜色深一点,中间花蕊外的颜色偏白;不透明度也可以改一下,就变成不同颜色 3 丸子 最外层的颜色最深,中间稍浅,加一些高光…

解决福昕风腾PDF套装无法打印在线电子签章的方法

使用福昕风腾PDF套装打印在线电子签章文件时发现,在线盖的电子印章和签名却打印不出来,后现发现,按图中选项选择“文档”,即可完整打印文件内容及电子签章。留印。

【2023】LitCTF

LitCTF2023&#xff08;复现&#xff09; Web&#xff1a; 1、我Flag呢&#xff1f; ​ ctrlu 读取源码&#xff0c;在最后发现了flag&#xff1a; <!--flag is here flagNSSCTF{3d5218b9-4e24-4d61-9c15-68f8789e8c48} -->2、PHP是世界上最好的语言&#xff01;&…

Spring AOP 基于注解实现用户权限校验

主要注解 interface&#xff1a;继承了 Annotation 接口的自定义注解&#xff0c;定义注释类型。 Target&#xff1a;表示这个注解可以应用的地方&#xff0c;此处做权限校验是用在方法上的&#xff0c;所以此处的值为 Target(ElementType.METHOD) …

Qt设置进程环境变量

目的 最近遇上了设置环境变量的问题,看似是小问题,想解决好,实在是一件不容易的事。 看看当时,我遇到这些问题的无奈: 首先说,是在windows进行环境变量的设置,如果在Linux那肯定是简单了。 一般来说,首先是设置系统的环境变量,这条路,是一条复杂的路,首先得写一个…

接口测试时, 数据Mock为何如此重要?

一、为什么要mock 工作中遇到以下问题&#xff0c;我们可以使用mock解决&#xff1a; 1、无法控制第三方系统某接口的返回&#xff0c;返回的数据不满足要求 2、某依赖系统还未开发完成&#xff0c;就需要对被测系统进行测试 3、有些系统不支持重复请求&#xff0c;或有访问…

使用命令给电脑添加虚拟网卡和IP

目录 1、添加网卡 1-1、windows系统添加网卡 1-2、Linux系统中添加网卡 2、添加IP和DNS 2-1、添加IP 2-2、 设置DNS 3、删除网卡 3-1、Windows: 3-2、Linux 3-3、macOS 4、示例&#xff1a; 首先以管理员方式进入CMD命令行&#xff1b; 点击“开始”->“管理员…

力扣74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a;每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示…