(1)今天进行了代码练习,ADC模块,温度获取
(2)练习将代码整合形成头文件,减少代码编程,形成一个主函数进行编译运行。
代码:
按键控制
main.c主函数:
/*==========================================
=====================
* Copyright (C) 2020
All rights reserved.
*
* 文件名称:
main.c
* 创 建 者:wang
* 创建日期:2020年
10月15日
* 描 述:
*
* 更新日志:
*
============================================
====================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include "dev.h"
int
main()
{
//1.打开设备文件 led pwm key
openDevice();
keyProcess();
return 0;
}
Dev.h文件
/*===============================================================
* Copyright (C) 2020 All rights reserved.
*
* 文件名称:dev.h
* 创 建 者:wang
* 创建日期:2020年10月15日
* 描 述:
*
* 更新日志:
*
===============================================================*/
#ifndef _DEV_H_
#define _DEV_H_
//1.头文件引入
//2.结构体 共同体 枚举类型定义
//3.宏定义
//4.取别名
//5.函数声明
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
typedef enum flag
{
FALSE,
TRUE,
}BOOL;
int ledFd,pwmFd,keyFd;
#define LED_MAGIC 'h'
#define CMD_ON 1
#define CMD_OFF 2
#define LED_ON _IOW(LED_MAGIC,CMD_ON,int)
#define LED_OFF _IOW(LED_MAGIC,CMD_OFF,int)
#define PWM_MAGIC 'P'
#define PWM_ON _IO(PWM_MAGIC,CMD_ON)
#define PWM_OFF _IO(PWM_MAGIC,CMD_OFF)
void openDevice();
void keyProcess();
void pwmProcess();
void ledProcess(int ledNum);
#endif
Pwm.c文件
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "ledapp.h"
#define PWM_MAGIC 'P'
#define CMD_ON 1
#define CMD_OFF 2
#define PWM_ON _IO(PWM_MAGIC,CMD_ON)
//#define PWM_OFF _IO(PWM_MAGIC,PWM_OFF)
int main()
{
int pwmFd= open("/dev/pwm0",O_RDWR);
if(pwmFd<0)
{
perror("pwm");
return -1;
}
ioctl(pwmFd,PWM_ON);
close(pwmFd);
}
Ledapp.h文件
#ifndef _LEDAPP_H_
#define _LEDAPP_H_
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<strings.h>
#include<signal.h>
#include<sys/ioctl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
int keyID,btnFd;
void sig_handler();
void led1();
void led2();
void led3();
void led4();
#endif
Ledapp.c文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "ledapp.h"
#define LED_MAGIC 'h'
#define CMD_ON 1
#define CMD_OFF 2
#define LED_ON _IOW(LED_MAGIC,CMD_ON,int)
int keyID,btnFd;
//0 1 2 3
void sig_handler(int signo)
{
if(signo==SIGIO)
{
read(btnFd,&keyID,sizeof(keyID));
printf("key%d press!\n",keyID);
if(keyID==2)
{
led1();
perror("led1");
}
else if(keyID==3)
{
led2();
perror("led2");
}
else
{
led3();
perror("led3");
}
}
}
void led1()
{
int ledFd = open("/dev/led",O_RDWR);
if(ledFd < 0)
{
perror("led\n");
// return -1;
}
ioctl(ledFd,LED_ON,0);
close(ledFd);
}
void led2()
{
int ledFd = open("/dev/led",O_RDWR);
if(ledFd < 0)
{
perror("led\n");
// return -1;
}
ioctl(ledFd,LED_ON,1);
close(ledFd);
}
void led3()
{
int ledFd = open("/dev/led",O_RDWR);
if(ledFd < 0)
{
perror("led\n");
// return -1;
}
ioctl(ledFd,LED_ON,2);
close(ledFd);
}
void led4()
{
int ledFd = open("/dev/led",O_RDWR);
if(ledFd < 0)
{
perror("led\n");
// return -1;
}
ioctl(ledFd,LED_ON,3);
close(ledFd);
}
/*void off()
{
int ledFd = open("/dev/led",O_RDWR);
if(ledFd < 0)
{
perror("led\n");
// return -1;
}
ioctl(ledFd,LED_ON,1);
close(ledFd);
}*/