2165|2

1513

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【上海航芯 ACM32F070开发板+触控功能评估板测评】+GPIO口的使用 [复制链接]

  本帖最后由 jinglixixi 于 2022-10-3 01:31 编辑

对GPIO口的学习是掌握开发板使用的最好入口,通过例程的分析和学习则是快速上手的途径。

1)输出模式的使用

在ACM32F070开发板上配有一个绿色的LED,可供输出测试之用,其电路如图1所示。

 

图1 LED电路

有图可知,该LED的控制引脚为PD3。为此,可对该引脚用如下函数来配置。

void GPIO_Test(void)
{
            GPIOD_Handle.Pin       = GPIO_PIN_3;
            GPIOD_Handle.Mode      = GPIO_MODE_OUTPUT_PP;
            GPIOD_Handle.Pull      = GPIO_PULLUP;
            GPIOD_Handle.Alternate = GPIO_FUNCTION_0;
            HAL_GPIO_Init(GPIOD, &GPIOD_Handle);
}

为控制该LED进行闪烁,其主程序如下:

int main(void)
{
    System_Init();
    APP_GPIO_Test(GPIO_INT);
    while (1)
    {
          HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_SET);
          System_Delay_MS(500);
          HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_CLEAR);
          System_Delay_MS(500);
    }
}

经程序的编译下载,就可见到LED的所示效果。

2)输入模式的使用

在ACM32F070开发板上配有一个黑色的按键,可供测试之用,其电路如图2所示。

 

图2 按键电路

有图可知,该按键的控制引脚为PC13。为此,可用例程进行基于中断方式测试。

此时,需将主程序改为如下形式:

int main(void)
{
    System_Init();
    Uart_Init(115200);
    APP_GPIO_Test(GPIO_PC13);
    while(1);
}

经下载测试,其串口的输出信息如图3所示。

由程序分析,在按下用户键时,应有“Get PC13 interrupt flag!!!”的信息提示,但并没有见到该提示内容。

据相关资料介绍说,引脚PC13、PC14、PC15的用法比较特殊。

图3 按键测试

若需将主程序改为如下形式:

int main(void)
{
    System_Init();
    Uart_Init(115200);
    APP_GPIO_Test(GPIO_INT);
    while(1);
}

倒是在PA0被接地时,能见到图4所示的变化。

图4 PA0触发变化

那么能否用按键来进行 LED的控制呢?

当然是可以,但需要外挂一个按键模块,其控制效果如图5和图6所示。

 

图5 未按键状态

 

图6 按键状态

相应的引脚配置函数为:

void GPIO_Test(void)
{
            GPIOD_Handle.Pin       = GPIO_PIN_3;
            GPIOD_Handle.Mode      = GPIO_MODE_OUTPUT_PP;
            GPIOD_Handle.Pull      = GPIO_PULLUP;
            GPIOD_Handle.Alternate = GPIO_FUNCTION_0;
            HAL_GPIO_Init(GPIOD, &GPIOD_Handle);
            GPIOC_Handle.Pin       = GPIO_PIN_0;
            GPIOC_Handle.Mode      = GPIO_MODE_INPUT;
            GPIOD_Handle.Pull      = GPIO_ GPIO_PULLUP;
            GPIOC_Handle.Alternate = GPIO_FUNCTION_0;
            HAL_GPIO_Init(GPIOA, &GPIOA_Handle);
}

实现控制功能的主程序为:

int main(void)
{
    System_Init();
    GPIO_Test();
    while (1)
    {
          if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==RESET)
          {
                HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_CLEAR);
          }
          else
          {
                HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_SET);
          }
          System_Delay_MS(200);
    }
}

 

3)蜂鸣器控制

在ACM32F070开发板上配有一个蜂鸣器,其电路如图7所示。

 

图7 蜂鸣器电路

 

该蜂鸣器的控制引脚为PD1,其引脚的配置语句如下:

GPIOD_Handle.Pin       = GPIO_PIN_1;

GPIOD_Handle.Mode      = GPIO_MODE_OUTPUT_PP;

GPIOD_Handle.Pull      = GPIO_PULLUP;

GPIOD_Handle.Alternate = GPIO_FUNCTION_0;

HAL_GPIO_Init(GPIOD, &GPIOD_Handle);

以按键控制蜂鸣器的主程序为:

int main(void)
{
    System_Init();
    GPIO_Test();
    while (1)
    {
          if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==RESET)
          {
                HAL_GPIO_WritePin(GPIOD, GPIO_PIN_1, GPIO_PIN_CLEAR);
          }
          else
          {
                HAL_GPIO_WritePin(GPIOD, GPIO_PIN_1, GPIO_PIN_SET);
          }
          System_Delay_MS(200);
    }
}

 

有了GPIO口的使用基础,后面就可以用GPIO口来模拟I2C驱动OLED或相应传感器了。

最新回复

有电路图配上编程控制清晰多了   详情 回复 发表于 2022-10-3 15:42
点赞 关注
 
 

回复
举报

6807

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

有电路图配上编程控制清晰多了

点评

感谢支持  详情 回复 发表于 2022-10-4 08:42
 
 
 

回复

1513

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
Jacktang 发表于 2022-10-3 15:42 有电路图配上编程控制清晰多了

感谢支持

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表