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

学习笔记|基于Delay实现的LED闪烁|模块化编程|SOS求救灯光|STC32G单片机视频开发教程(冲哥)|第六集(下):实现LED闪烁

文章目录

  • 2 函数的使用
    • 1.函数定义(需要带类型)
    • 2.函数声明(需要带类型)
    • 3.函数调用
  • 3 新建文件,使用模块化编程
    • 新建xxx.c和xxx.h文件
    • xxx.h格式:
    • 调用头文件
    • 验证代码
      • 调用:
      • 完整的文件结构如下:
    • 验证代码2
  • 总结
    • 课后练习:SOS求救灯光编写
      • 求救信号原理
      • 示例代码

2 函数的使用

在模块化编程里,函数使用分为如下三步:

1.函数定义(需要带类型)

返回值 函数名称( 入口参数 )
{
函数要执行的功能
}
@返回值:没有返回值就是void
@函数名称:避开关键词(IDE中标蓝),不重复,非特殊字符随便取
@入口参数:类型+名称,多个参数“,”分开,空就写void

2.函数声明(需要带类型)

返回值 函数名称( 入口参数 );

3.函数调用

函数名称( 入口参数 );调用的时候就只需要入参数,不需要带类型,

3 新建文件,使用模块化编程

新建xxx.c和xxx.h文件

新建xxx.c和xxx.h文件,代表一个功能块。推荐一一对应。
点击新建,默认弹出的是text文件,未定义文件类型,点击保存,存储为math.c,并另存为math.h:
在这里插入图片描述

xxx.h格式:

#ifndef __XXX_H
#define __XXX_H
在math.h中加入固定搭配格式。

调用头文件

函数声明…
#endif

xxx.c格式
#include “xxx.h”
函数定义

验证代码

math.h:

#ifndef __MATH_H  //if not define
#define __MATH_Hint Add(int parm1,int parm2);#endif

math.c:

int Add(int parm1,int parm2)
{return   parm1 + parm2;
}

在main.c中加入引用:#include “math.h”。

调用:

添加文件一定要记得引用路径和添加到工程里。
在这里插入图片描述
全部保存,并双击图标,将math.c加入工程,
在这里插入图片描述
编译完成,自动下载至开发板。打开CDC串口工具,清空数据区,发送数据,得到打印值:
在这里插入图片描述
这样操作,主函数代码非常干净,便于大型项目的管理和组织。

完整的文件结构如下:

在这里插入图片描述

验证代码2

math.h:

#ifndef __MATH_H  //if not define
#define __MATH_Hint Add(int parm1,int parm2);  //parm1+parm2
int Sub(int parm1,int parm2);  //parm1-parm2
int Mul(int parm1,int parm2);  //parm1*parm2#endif

math.c:

#include "math.h"int Add(int parm1,int parm2)
{return   parm1 + parm2;
}int Sub(int parm1,int parm2)
{return   parm1 - parm2;
}int Mul(int parm1,int parm2)
{return   parm1 * parm2;
}

main.c中调用:

			printf("add(10,20)计算结果为: %d\r\n",Add(10,20));+printf("sub(5,2)计算结果为: %d\r\n",Sub(5,2));printf("Mul(5,6)计算结果为: %d\r\n",Mul(5,6));

正常执行。
在这里插入图片描述

总结

1.熟悉while的循环过程
2.学会函数的使用(定义、声明、调用)
3.学会新建文件,添加文件路径和添加到工程

课后练习:SOS求救灯光编写

求救信号原理

来源:爱问知识人:sos用灯光怎么表示
三短三长三短
SOS作为世界上通用的求救信号,如果用灯光信号来表示,三短亮代表字母S,三长亮代表字母O,再接着的三短亮代表S。
灯的长亮时间是短亮时间的三倍,而短亮时间则与LED两次点亮的间隔时间相同,字母与下一个字母间也有三倍短亮时间的熄灭间隔。

示例代码

		//Swhile( time < 4 ){P22 = 0; //设置低电平	(屠龙刀三板载led)P24 = 0;delay_ms(500);P22 = 1; //设置低电平	(屠龙刀三板载led)P24 = 1;delay_ms(500);time++;}delay_ms(1000);time = 1;//Owhile( time < 4 ){P22 = 0; //设置低电平	(屠龙刀三板载led)P24 = 0;delay_ms(1500);P22 = 1; //设置低电平	(屠龙刀三板载led)P24 = 1;delay_ms(500);time++;}delay_ms(1000);time = 1;//Swhile( time < 4 ){P22 = 0; //设置低电平	(屠龙刀三板载led)P24 = 0;delay_ms(500);P22 = 1; //设置低电平	(屠龙刀三板载led)P24 = 1;delay_ms(500);time++;}delay_ms(1000);time = 1;```
http://www.lryc.cn/news/133046.html

相关文章:

  • 微服务-Ribbon(负载均衡)
  • 解决C#报“MSB3088 未能读取状态文件*.csprojAssemblyReference.cache“问题
  • GeoScene Pro在地图制图当中的应用
  • 国标混凝土结构设计规范的混凝土本构关系——基于python代码生成
  • 系统架构设计-架构师之路(八)
  • 【SA8295P 源码分析】25 - QNX Ethernet MAC 驱动 之 emac_isr_thread_handler 中断处理函数源码分析
  • 函数栈帧的创建与销毁
  • 工业安全生产平台在面粉行业的应用分享
  • Gitlab服务部署及应用
  • 【nodejs】用Node.js实现简单的壁纸网站爬虫
  • xlsx xlsx-style file-saver 导出json数据到excel文件并设置标题字体加粗
  • Win11游戏高性能模式怎么开
  • 深度学习最强奠基作ResNet《Deep Residual Learning for Image Recognition》论文解读(上篇)
  • 第22次CCF计算机软件能力认证
  • Go语言基础之基本数据类型
  • Linux Tracing Technologies
  • iOS自定义下拉刷新控件
  • Springboot写单元测试
  • 一篇文章教你使用Docker本地化部署Chatgpt(非api,速度非常快!!!)及裸连GPT的方式(告别镜像GPT)
  • 前馈神经网络dropout实例
  • Android DataStore:安全存储和轻松管理数据
  • opencv进阶12-EigenFaces 人脸识别
  • The internal rate of return (IRR)
  • 半导体自动化专用静电消除器主要由哪些部分组成
  • 【C++入门到精通】C++入门 —— deque(STL)
  • Codeforces Round 893 (Div. 2) D.Trees and Segments
  • SpringBoot + Vue 前后端分离项目 微人事(九)
  • 【业务功能篇71】Cglib的BeanCopier进行Bean对象拷贝
  • 让eslint的错误信息显示在项目界面上
  • 手摸手带你实现一个开箱即用的Node邮件推送服务