华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 1461|回复: 3

SWM的MCU的管脚初始化的代码选择。2024年3月。

[复制链接]

4

主题

10

帖子

111

积分

注册会员

Rank: 2

积分
111
QQ
发表于 2024-3-13 16:10:50 | 显示全部楼层 |阅读模式
最近看了SWM190的最新库,
有两个版本:
a) SWM190_Lib-230706.zip
b) 基于SWM32_DFP.1.x.x.pack 版本(不大理解这个说法的意思)


左a右b

左a右b

上图左a  右b
基于左边的最新版本,初始化代码不用原来的写法:

        GPIO_Init(GPIOA, PIN4, 0, 1, 0, 0);                        //输入,上拉使能,接KEY

可以如下对等的写法:

        GPIO_INIT(GPIOA, PIN4, GPIO_INPUT_PullUp);        //同上,另一种可读性更好的写法

我以前的别一种写代码的方式,可以读性也不错,喜欢的可以同行。

code

code

回复

使用道具 举报

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
发表于 2024-3-13 17:05:09 | 显示全部楼层

GPIO_Init 里面有调用 PORT_Init,,用户自己不需要在前面对该引脚执行 PORT_Init
回复

使用道具 举报

4

主题

10

帖子

111

积分

注册会员

Rank: 2

积分
111
QQ
 楼主| 发表于 2024-3-13 18:24:59 | 显示全部楼层
XIVN1987 发表于 2024-3-13 17:05
GPIO_Init 里面有调用 PORT_Init,,用户自己不需要在前面对该引脚执行 PORT_Init ...

我可能是从最老的库过来的。
回复

使用道具 举报

4

主题

10

帖子

111

积分

注册会员

Rank: 2

积分
111
QQ
 楼主| 发表于 2024-3-14 10:41:12 | 显示全部楼层
我去查看了一下库的代码:
GPIO_Init()内部有调用
PORT_Init(PORTx, n, 0, 1);
这是是不是意思是都是开中断的?

另:我的SWM34S的代码如下:
//  ……………………………………………………………………………………………………………………………………………………………………………………………\
//  |               设置GPIO的功能                          |              |
//  |         Port?|  PIN?| Fuction?            |IE?|       |              |
    PORT_Init(PORTA,  PIN0,      PORTA_PIN0_GPIO, 0);       //输出:GPIO-A00
    PORT_Init(PORTA,  PIN1,      PORTA_PIN1_GPIO, 0);       //LCDA模块:BK输出:GPIO-A01
    PORT_Init(PORTA,  PIN2,    PORTA_PIN2_LCD_B4, 0);       //LCDA模块CD_B4
    PORT_Init(PORTA,  PIN3,   PORTA_PIN3_XTAL_IN, 0);       //SYS:高速晶振
    PORT_Init(PORTA,  PIN4,  PORTA_PIN4_XTAL_OUT, 0);       //SYS:高速晶振
    PORT_Init(PORTA,  PIN5,      PORTA_PIN5_GPIO, 0);       //输出:GPIO-A05
//    PORT_Init(PORTA,  PIN6,   PORTA_PIN6_XTAL_IN, 0);       //SYS:低速晶振
//    PORT_Init(PORTA,  PIN7,   PORTA_PIN7_XTAL_IN, 0);       //SYS:低速晶振
    PORT_Init(PORTA,  PIN8,      PORTA_PIN8_GPIO, 0);       //GPIO:ISP
    PORT_Init(PORTA,  PIN9,    PORTA_PIN9_LCD_B5, 0);       //LCDA模块CD_B5
    PORT_Init(PORTA, PIN10,   PORTA_PIN10_LCD_B6, 0);       //LCDA模块CD_B6
    PORT_Init(PORTA, PIN11,   PORTA_PIN11_LCD_B7, 0);       //LCDA模块CD_B7
    PORT_Init(PORTA, PIN12,   PORTA_PIN12_LCD_G0, 0);       //LCDA模块CD_G0
    PORT_Init(PORTA, PIN13,   PORTA_PIN13_LCD_G1, 0);       //LCDA模块CD_G1
    PORT_Init(PORTA, PIN14,   PORTA_PIN14_LCD_G2, 0);       //LCDA模块CD_G2
    PORT_Init(PORTA, PIN15,   PORTA_PIN15_LCD_G3, 0);       //LCDA模块CD_G3
//==========================================================================
//  |               设置GPIO的方向与特性          |              |
//  |              |      |方|上|下|开|           |              |
//  |         Port?|      |向|拉|拉|漏|           |              |
    GPIO_Init(GPIOA,  PIN0, 1, 1, 0, 0);          //输出:GPIO-A00
    GPIO_Init(GPIOA,  PIN1, 1, 1, 0, 0);          //输出:GPIO-A01
    GPIO_Init(GPIOA,  PIN2, 1, 1, 0, 0);          //LCDA模块CD_B4
//    GPIO_Init(GPIOA,  PIN3, 1, 1, 0, 0);          //SYS:高速晶振
//    GPIO_Init(GPIOA,  PIN4, 1, 1, 0, 0);          //SYS:高速晶振
    GPIO_Init(GPIOA,  PIN5, 1, 1, 0, 0);          //输出:GPIO-A05
//    GPIO_Init(GPIOA,  PIN6, 1, 1, 0, 0);          //SYS:低速晶振
//    GPIO_Init(GPIOA,  PIN7, 1, 1, 0, 0);          //SYS:低速晶振
    GPIO_Init(GPIOA,  PIN8, 0, 1, 0, 0);          //GPIO:ISP
    GPIO_Init(GPIOA,  PIN9, 1, 1, 0, 0);          //LCDA模块CD_B5
    GPIO_Init(GPIOA, PIN10, 1, 1, 0, 0);          //LCDA模块:LCD_B6
    GPIO_Init(GPIOA, PIN11, 1, 1, 0, 0);          //LCDA模块:LCD_B7
    GPIO_Init(GPIOA, PIN12, 1, 1, 0, 0);          //LCDA模块:LCD_G0
    GPIO_Init(GPIOA, PIN13, 1, 1, 0, 0);          //LCDA模块:LCD_G1
    GPIO_Init(GPIOA, PIN14, 1, 1, 0, 0);          //LCDA模块:LCD_G2
    GPIO_Init(GPIOA, PIN15, 1, 1, 0, 0);          //LCDA模块:LCD_G3

当我们的GPIO做多功能的其他引脚时不能使用GPIO_Init()来初始化。
是不是我有使用了PORT_Init()就不必用GPIO_Init()
反之也是。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2025-1-9 20:56 , Processed in 0.034747 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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