你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32Cube HAL GPIO输入/输出

[复制链接]
STMCU小助手 发布时间:2022-4-7 17:47
实验内容:按键KEY1控制RGB灯颜色变换。

一、原理图

KQ`QPO8MA{94KMEWF%N2LJX.png

二、 CubeMX配置

Step1. 打开 STM32CubeMX ,点击“ New Project ”,选择芯片型号, STM32F103VETx 。
R}F5@SY1FNIR_XKMRX~HMDI.png


Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。

[6WXYGJE1NG27UWMRP1B)BB.png
B%P8TXD(KY`Y_N0GW283)8M.png

Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)

D[2[0Q%L76C2{@@NC4$SJEB.png

Step4.GPIO引脚配置,点击搜索框,选择相应的引脚。PB0/PB1/PB5  配置为GPIO_Output,PA0 配置为GPIO_Input。

0MT8$NPA(K{0)YY)1J{05~T.png

KEY引脚配置:方框3 第一行是GPIO模式,这里选择输入模式,第二行是选择上拉还是下拉,这里选择既不上拉也不下拉,第三行是用户标签(可以自己给该引脚命名)。

QS[I3P@%3IKKKJ{B8)%JJ)0.png

RGB灯引脚配置:方框中 第一行是初始化引脚电平,(我的开发板灯是低电平亮,所以初始化高电平),第二行是GPIO模式,这里选择推挽输出,第三行是选择上拉还是下拉,这里选择既不上拉也不下拉,第四行是IO口翻转速度,这里选择低速,第五行是用户标签(可以自己给该引脚命名)。

O{D%1P[B{W}P1(GTZ~@)AGD.png

Step5.Project工程设置,这个选项是配置工程重要的一个选项,其中配置的信息也比较重要,且容易理解。

QW``0_T@~D%@`4VV_A80XSR.png

  Step6.Project代码生成配置界面。

G39UZ7_P[W)IN7N`691@~}4.png

  Step7.Project高级配置界面。(一般情况下,采用默认配置即可)

C[67]M3IR[Z}R0XI`AI7D.png

   Step8.点击“GENRATE CODE”生成代码。



三、添加功能代码

按键扫描程序:

  1. uint8_t KEY_SCAN(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
  2. {
  3.         if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==1)
  4.         {
  5.                 while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==1);//松手检测
  6.                 return 1;
  7.         }
  8.                 return 0;
  9. }
复制代码

RGB灯控制程序:
  1.         uint8_t cnt=0;
  2.         uint8_t value=0;
复制代码

  1. while (1)
  2.   {
  3.                 value=KEY_SCAN(KEY_CTRL_GPIO_Port, KEY_CTRL_Pin);
  4.                 if(value==1)
  5.                 {
  6.                         switch(cnt)
  7.                         {
  8.                                 case 0:
  9.                                 {
  10.                                     HAL_GPIO_WritePin(GPIOB, LED_R_Pin,0);
  11.                                     HAL_GPIO_WritePin(GPIOB, LED_G_Pin,1);
  12.                                     HAL_GPIO_WritePin(GPIOB, LED_B_Pin,1);
  13.                                     cnt++;
  14.                                     break;
  15.                                 }
  16.                                 case 1:
  17.                                 {
  18.                                         HAL_GPIO_WritePin(GPIOB, LED_R_Pin,1);
  19.                                         HAL_GPIO_WritePin(GPIOB, LED_G_Pin,0);
  20.                                     HAL_GPIO_WritePin(GPIOB, LED_B_Pin,1);
  21.                                         cnt++;
  22.                                     break;
  23.                                 }
  24.                                 case 2:
  25.                                 {
  26.                                         HAL_GPIO_WritePin(GPIOB, LED_R_Pin,1);
  27.                                         HAL_GPIO_WritePin(GPIOB, LED_G_Pin,1);
  28.                                     HAL_GPIO_WritePin(GPIOB, LED_B_Pin,0);
  29.                                         cnt++;
  30.                                     break;
  31.                                 }
  32.                                 case 3:
  33.                                 {
  34.                                         HAL_GPIO_WritePin(GPIOB, LED_R_Pin,1);
  35.                                         HAL_GPIO_WritePin(GPIOB, LED_G_Pin,1);
  36.                                     HAL_GPIO_WritePin(GPIOB, LED_B_Pin,1);
  37.                                         cnt=0;
  38.                                     break;
  39.                                 }
  40.                         }
  41.                                        
  42.                 }

  43.   }
复制代码





收藏 评论0 发布时间:2022-4-7 17:47

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版