打印
[应用相关]

C语言交叉编译控制LED

[复制链接]
281|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stormwind123|  楼主 | 2023-9-22 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include

#include

#include

#include

#include  //define O_WRONLY and O_RDONLY


// LED 引脚

#define SYSFS_GPIO_EXPORT "/sys/class/gpio/export"

#define SYSFS_GPIO_UNEXPORT "/sys/class/gpio/unexport"

#define SYSFS_GPIO_RST_PIN_VAL "440"

#define SYSFS_GPIO_RST_DIR "/sys/class/gpio/gpio440/direction"

#define SYSFS_GPIO_RST_DIR_VAL "OUT"

#define SYSFS_GPIO_RST_VAL "/sys/class/gpio/gpio440/value"

#define SYSFS_GPIO_RST_VAL_H "1"

#define SYSFS_GPIO_RST_VAL_L "0"


int main()

{

    int fd;

    int count = 30;


    // 打开端口/sys/class/gpio# echo 440 > export

    fd = open(SYSFS_GPIO_EXPORT, O_WRONLY);

    if (fd == -1)

    {

        printf("ERR: export open error.\n");

        return EXIT_FAILURE;

    }

    write(fd, SYSFS_GPIO_RST_PIN_VAL, sizeof(SYSFS_GPIO_RST_PIN_VAL));

    close(fd);


    // 设置端口方向/sys/class/gpio/gpio440# echo out > direction

    fd = open(SYSFS_GPIO_RST_DIR, O_WRONLY);

    if (fd == -1)

    {

        printf("ERR: direction open error.\n");

        return EXIT_FAILURE;

    }

    write(fd, SYSFS_GPIO_RST_DIR_VAL, sizeof(SYSFS_GPIO_RST_DIR_VAL));

    close(fd);


    // 输出复位信号: 拉高>100ns

    fd = open(SYSFS_GPIO_RST_VAL, O_RDWR);

    if (fd == -1)

    {

        printf("ERR: gpio open error.\n");

        return EXIT_FAILURE;

    }

    while (count)

    {

        count--;

        printf("milk:%d\r\n",count);

        write(fd, SYSFS_GPIO_RST_VAL_H, sizeof(SYSFS_GPIO_RST_VAL_H));

        usleep(1000000);

        write(fd, SYSFS_GPIO_RST_VAL_L, sizeof(SYSFS_GPIO_RST_VAL_L));

        usleep(1000000);

    }

    close(fd);


    // 打开端口/sys/class/gpio# echo 440 > unexport

    fd = open(SYSFS_GPIO_UNEXPORT, O_WRONLY);

    if (fd == -1)

    {

        printf("ERR: unexport open error.\n");

        return EXIT_FAILURE;

    }

    write(fd, SYSFS_GPIO_RST_PIN_VAL, sizeof(SYSFS_GPIO_RST_PIN_VAL));

    close(fd);


    return 0;

}

复制代码

代码如上所示:

使用特权

评论回复
沙发
Bblythe| | 2024-9-11 07:07 | 只看该作者

超过变量128后必须使用compact模式编译

使用特权

评论回复
板凳
周半梅| | 2024-9-11 09:03 | 只看该作者

一般要进行内存优化,尽量提高内存的使用效率

使用特权

评论回复
地板
Pulitzer| | 2024-9-11 10:06 | 只看该作者

让尽可能多的变量使用直接寻址,提高速度

使用特权

评论回复
5
童雨竹| | 2024-9-11 12:02 | 只看该作者

访问时采用不同的指令,所以并不会占用 RAM 空间

使用特权

评论回复
6
Wordsworth| | 2024-9-11 13:05 | 只看该作者

极限情况下可以定义的变量可占 247 个字节

使用特权

评论回复
7
Clyde011| | 2024-9-11 14:08 | 只看该作者

128以上的某些地址为特殊寄存器使用,不能给程序用

使用特权

评论回复
8
公羊子丹| | 2024-9-11 15:01 | 只看该作者

51 单片机不使用线性编址

使用特权

评论回复
9
万图| | 2024-9-11 16:04 | 只看该作者

超出 120 个字节则必须用 idata 显式的指定为间接寻址

使用特权

评论回复
10
Uriah| | 2024-9-11 17:07 | 只看该作者

只要内存占用量不超过 256.0 就可以用 small 模式编译

使用特权

评论回复
11
帛灿灿| | 2024-9-11 19:03 | 只看该作者

small 模式下未指存储类型的变量默认为data型

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

457

主题

2431

帖子

3

粉丝