找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

MCU IO怎么样运用C语言结构体?

查看数: 5150 | 评论数: 17 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-7-23 14:37

正文摘要:

    很多MCU单片机IO口都需调用一个类似的子函数,但是如果都用不同的子函数代码又太长了,有什么好的方法解决这个问题,隐约记得可以用结构体或者宏参数,但是没有用过,不知道怎么用,有没有大佬指点一 ...

回复

ID:934353 发表于 2021-7-28 17:24
munuc_w 发表于 2021-7-28 15:00
很简单的函数,在原函数里只是增加一个决定片选的形参,由这个参数决定片选信号即可,如:

xxx(xxx, ...

好的,好的,有思路了,非常感谢
ID:752974 发表于 2021-7-28 15:00
开心就好hhhh 发表于 2021-7-28 13:06
是的是的,我就是想写一个这样的,但是没有写过,就不知道该怎么写,我想参照32的库函数来着,但是感觉又 ...

很简单的函数,在原函数里只是增加一个决定片选的形参,由这个参数决定片选信号即可,如:

xxx(xxx,xxx,xCS)
{
  if(xCS==1)
     cs1=0;
else if(xCS==2)
     cs2=0;
else if(xCS==3)
      cs3=0;
//下面就是原来的函数,写入地址,写入数据
  。。。。

}
注意退出函数前各个使用的CS信号要拉高。
ID:934353 发表于 2021-7-28 13:06
munuc_w 发表于 2021-7-28 12:43
我以前也遇到过你的情况,要写好多函数,内容一样,就是IO分配不同。后来整合到一个函数里,函数增加一个 ...

是的是的,我就是想写一个这样的,但是没有写过,就不知道该怎么写,我想参照32的库函数来着,但是感觉又不一样,大佬能不能提点一下?谢谢
ID:752974 发表于 2021-7-28 12:43
开心就好hhhh 发表于 2021-7-28 11:01
我就是用了三个数码管驱动芯片,所以才希望将代码写的更简洁一点

我以前也遇到过你的情况,要写好多函数,内容一样,就是IO分配不同。后来整合到一个函数里,函数增加一个形参,由形参决定片选,用于区别不同的驱动芯片。
ID:934353 发表于 2021-7-28 11:01
munuc_w 发表于 2021-7-28 08:50
选用具有片选信号的数码管驱动器,如TA6932,DIO和CLK共用,数据流向由片选信号控制。

我就是用了三个数码管驱动芯片,所以才希望将代码写的更简洁一点
ID:752974 发表于 2021-7-28 08:50
开心就好hhhh 发表于 2021-7-27 15:52
比如说把这三个整合到一起,因为数码管的一些函数是一样的,只是不一样的io口驱动不一样的数码管而已

选用具有片选信号的数码管驱动器,如TA6932,DIO和CLK共用,数据流向由片选信号控制。
ID:190577 发表于 2021-7-28 07:23
typedef struct
{
  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.
                                      This parameter can be any value of @ref GPIO_pins_define */

  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */

  GPIOMode_TypeDef GPIO_Mode;    /*!< Specifies the operating mode for the selected pins.
                                      This parameter can be a value of @ref GPIOMode_TypeDef */
}GPIO_InitTypeDef;
ID:956553 发表于 2021-7-27 17:09
看st的库函数封装API或者NXP的封装
ID:752974 发表于 2021-7-27 15:33
51中的位操作已经做不能再简单了,不知楼主想如何操作。
ID:451718 发表于 2021-7-27 10:18
看一下STM32的库函数例程就清楚了。
ID:934353 发表于 2021-7-27 10:13
gain 发表于 2021-7-23 18:33
地址都在reg51.h这个文件里有声明

这个头文件里有P1,P2等的地址,但是没有看到P1^1之类的具体地址,感谢回答
ID:950257 发表于 2021-7-23 18:33
开心就好hhhh 发表于 2021-7-23 15:41
可是io口的地址不知道呢怎么办,比如说P1^1这样子,我该怎么用呢

地址都在reg51.h这个文件里有声明
ID:934353 发表于 2021-7-23 17:21
yzwzfyz 发表于 2021-7-23 17:19
就象做乘法一样,提取公因式。
将公共部门做成子程序,不同部分做成参数变量。

我知道大概意思,但是不知如何操作,感谢回答
ID:123289 发表于 2021-7-23 17:19
就象做乘法一样,提取公因式。
将公共部门做成子程序,不同部分做成参数变量。
ID:934353 发表于 2021-7-23 15:41
黄youhui 发表于 2021-7-23 15:24
有啊,结构体内成员可以是函数,就是指针。

可是io口的地址不知道呢怎么办,比如说P1^1这样子,我该怎么用呢
ID:592807 发表于 2021-7-23 15:24
有啊,结构体内成员可以是函数,就是指针。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表