[CW32F003系列] 【CW32F003ExPx StartKit开发板】新手入门之GPIO

[复制链接]
1470|3
 楼主| peterLaw 发表于 2024-6-12 14:38 | 显示全部楼层 |阅读模式
本帖最后由 peterLaw 于 2024-6-12 14:41 编辑

#申请原创# @21ic小跑堂
众所周知,对于大多数的MCU我们使用的功能只不过的其50%左右,其实最基础的还是IO的操作,有了IO的基础才可以逐步进行深入的开发。
下面咱们就以CW32F003ExPx StartKit开发板讲解入门IO操作。
首先对于任何一款开发板一定要了解的就是其原理,只有了解了原理才能知道各个引脚的状态,
下面咱们先把CW32F003ExPx StartKit开发板的原理图给大家分享一下:
1.png
2.png
通过原理图咱们可以知道按键S1与S2即(PB5与PB6引脚)默认连接的高电平,下面咱们就先把2个按键写入程序进行控制。
对于单片机而言尤其是库函数,一定要进行初始化配置,只有配置了各个引脚的功能才能使用引脚将功能实例化。下面为GPIOB引脚初始化代码:
  1.    
  2.     GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO结构体
  3.         
  4.     CW_SYSCTRL->AHBEN_f.GPIOB = 1;    //Open GPIOB Clk,打开GPIOB口的时钟总线,就说明是GPIOB口操作

  5.     //set PB05 / PB06 as inupt with pur / int = none
  6.     GPIO_InitStruct.Pins = GPIO_PIN_5 | GPIO_PIN_6;//配置GPIOB的引脚5和6
  7.     GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;//配置为输入上拉
  8.     GPIO_InitStruct.IT   = GPIO_IT_NONE;//不涉及中断
  9.     GPIO_Init( CW_GPIOB , &GPIO_InitStruct);//初始化GPIOB
有了按键咱们用按键控制2个LED灯,选用PB00与PB01两个IO口连接LED灯。 微信图片_20240612143317.jpg
过程跟上面一样初始化IO,配置为输出模式。
  1.   //GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO结构体,前面已经定义可以省去不用重复
  2. //CW_SYSCTRL->AHBEN_f.GPIOB = 1;    //Open GPIOB Clk,打开GPIOB口的时钟总线,前面已经打开可以不用重复打开
  3.                 //set PB00 / PB01  as output
  4.     GPIO_InitStruct.Pins = GPIO_PIN_0 | GPIO_PIN_1 ;
  5.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  6.     GPIO_Init( CW_GPIOB , &GPIO_InitStruct);
最后咱们编写逻辑,当PB5按下时,PB5口为低电平0(根据原理图可以看出按下接地为0,正常为1),PB5控PB00的LED灯,PB6控PB01的LED灯
  
  1.    
  2.         while(1)
  3.         {
  4.         //-----------------------------------------------------------------------
  5.         //以下调用函数法读写PIN
  6.         if( GPIO_ReadPin(CW_GPIOB , GPIO_PIN_5 ) )
  7.         {
  8.             GPIO_WritePin( CW_GPIOB , GPIO_PIN_0 , GPIO_Pin_SET );
  9.         }
  10.         else
  11.         {
  12.             GPIO_WritePin( CW_GPIOB , GPIO_PIN_0 , GPIO_Pin_RESET );
  13.         }
  14.         
  15.         //-----------------------------------------------------------------------
  16.         //以下采用宏读写PIN
  17.         if( PB06_GETVALUE() )
  18.         {
  19.             PB01_SETHIGH();
  20.            // PB03_TOG();
  21.         }
  22.         else
  23.         {
  24.             PB01_SETLOW();
  25.         }            
  26.     }

最终显示的效果如下:

通过本文对芯源开发板的IO控制讲解是不是非常简单,赶快跟我们一起玩转芯源MCU!



AdaMaYun 发表于 2024-6-13 19:52 | 显示全部楼层
楼主讲解的很详细,学习到了
OKAKAKO 发表于 2024-6-21 21:29 | 显示全部楼层
新手入门的GPIO非常详细
中国龙芯CDX 发表于 2024-6-26 15:34 | 显示全部楼层
最基础的还是IO的操作,有了IO的基础才可以逐步进行深入的开发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

459

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部