【Day5】:GPIO输入输出(上)

GPIO

GPIO全称为General-purpose input/output,通用型之输入输出的简称,可以供使用者对脚位进行输入输出的操作。

脚位

单晶片不外乎就是对各个脚位做输入输出来控制马达、接收讯号等,因此我们首先要来认识STM32的脚位。我把STM32F429ZI这块开发版的脚位分成两个部分,一个是黑色已经焊好母座的脚位(图中黑色部分)
另一个是黑色脚位两侧的脚位,目前我的这块开发版是没有焊上针脚的,(但我也有看过已经焊上公头的开发版啦),总之就是将针脚分成内侧与外侧两个部分。
https://ithelp.ithome.com.tw/upload/images/20210905/20141525JC0s0XWOdM.jpg
外侧的脚位比较简单,直接翻到板子的背面就可以看到每个脚位的编号了,而内侧的脚位名称需要查表,看的是红色箭头所标示的名称,未标示的为Arduino的脚位,因为这块开发版是一块兼容Arduino的板子,因此他也写上了对应到Arduino的脚位。
https://ithelp.ithome.com.tw/upload/images/20210905/20141525JQb6GCx38s.jpg
例如CN9的1号脚位名称为PA3

ioc档

这个档案就是设定脚位配置的图形化介面,在左侧档案管理的地方找到filename.ioc(filename为专案名称),点击两下就会打开,过程有可能要一点时间
打开後一出现的就是STM32F429ZI单晶片的样子啦,我们可以看到他总共有144个脚位(你可以数数看,不过我已经帮你数玩了啦~)在这里我们就可以针对这144个脚位设定他的功能。
右下角的放大镜可以输入脚位名称搜寻,例如输入PB8对应到的脚位就会闪黑色,不要怀疑就是这个脚位了!
https://ithelp.ithome.com.tw/upload/images/20210905/20141525jKBTmyM83e.jpg
点击选择GPIO_Output这个模式,就顺利的将这个脚位设为输出模式了。如果想要复原,则可以选择Reset_State这个模式,这也有可能需要一点时间,看到脚位就会变绿色就代表成功设定完啦~
https://ithelp.ithome.com.tw/upload/images/20210905/20141525N23dpjMLJL.jpg
只要有更动,且还没有储存,上面档案这边就会显示" * ",这个时候按ctrl+s就可以顺利储存啦
https://ithelp.ithome.com.tw/upload/images/20210905/201415251Y90EOuKLJ.jpg
如果有遇到询问的视窗都一律按Yes,可以打勾,下次就不会再出现提醒了。
https://ithelp.ithome.com.tw/upload/images/20210905/20141525GaDyqnNfK9.jpg
https://ithelp.ithome.com.tw/upload/images/20210905/20141525YXmaRhbSJB.jpg
最後回到main.c档案,往下滑我们可以发现自动新增一些程序码,这段程序码的功能是将GPIO初始化,这也就是STMCubeIDE这个IDE好用的地方,可以自动产生代码,不然这些东西自己打初学者应该会疯掉吧...

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);

  /*Configure GPIO pin : PB8 */
  GPIO_InitStruct.Pin = GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

小结

今天简单的介绍了GPIO以及STM32的脚位要如何查询,并且将脚位设定成输出模式。明天我们就来实际的输出看看吧!


<<:  第3砍 - 不亮也光

>>:  连续 30 天 玩玩看 ProtoPie - Day 4

第17车厢-超实用!tab页签切换:data-*应用篇

本篇介绍常用的tab切换功能,使用js、jq、Vue3如何做到,以及说明若一个版面会出现一个以上需...

图的走访 - BFS 篇

4 图的走访 - BFS 篇 如果要好好地探索一张图,最经典的方法莫过於深度优先搜索(Depth F...

第6章:基本操作文字档案介绍

前言 在上一章节中,介绍了该如何使用man这个指令来查询指定的指令的用法,在这一章节中,笔者将继续的...

Day.1 起点 - 前言 ( Percona Server )

在这30天的文章中分享藉由在工作上学习资料库管理相关的一些心得笔记与一些经验分享和操作纪录,希望能...

Day 21:GitLab Container Registry

之前在第 15 天的时候,我有提过希望可以把 build image 的步骤移到 CI pipeli...