原来所使用的引脚不对,应从PA8、PA10及PA12中选取,将程序改为如下内容后即可获得闪烁效果。
-
int main(void)
-
{
-
CLIC_Init();
-
System_Clock_Init();
-
GPIO_MODE_Init(GPIOA,PIN8,GPIO_MODE_OUTPUT);
-
while(1)
-
{
-
Delay32M_ms(500);
-
GPIO_Toggle(GPIOA,PIN8);
-
}
-
}
复制代码
在完成程序编译后,即可生成名为“mcu.elf”的目标文件。随后使用CSM-ISP下载工具,选取该文件进行下载即可。
图3选取下载文件
图4完成下载
在完成下载后,即可达到图5所示的所示效果。
图5显示效果
若在此基础上加以修改,则可以获得7色彩灯的循环显示效果。
-
int main(void)
-
{
-
CLIC_Init();
-
System_Clock_Init();
-
GPIO_MODE_Init(GPIOA,PIN8,GPIO_MODE_OUTPUT);
-
GPIO_MODE_Init(GPIOA,PIN10,GPIO_MODE_OUTPUT);
-
GPIO_MODE_Init(GPIOA,PIN12,GPIO_MODE_OUTPUT);
-
while(1)
-
{
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN12,GPIO_RESET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN12,GPIO_SET);
-
GPIO_Write(GPIOA,PIN10,GPIO_RESET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN10,GPIO_SET);
-
GPIO_Write(GPIOA,PIN8,GPIO_RESET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN8,GPIO_SET);
-
GPIO_Write(GPIOA,PIN12,GPIO_RESET);
-
GPIO_Write(GPIOA,PIN10,GPIO_RESET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN8,GPIO_RESET);
-
GPIO_Write(GPIOA,PIN12,GPIO_RESET);
-
GPIO_Write(GPIOA,PIN10,GPIO_SET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN8,GPIO_RESET);
-
GPIO_Write(GPIOA,PIN12,GPIO_SET);
-
GPIO_Write(GPIOA,PIN10,GPIO_RESET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN8,GPIO_RESET);
-
GPIO_Write(GPIOA,PIN12,GPIO_RESET);
-
GPIO_Write(GPIOA,PIN10,GPIO_RESET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOA,PIN8,GPIO_SET);
-
GPIO_Write(GPIOA,PIN12,GPIO_SET);
-
GPIO_Write(GPIOA,PIN10,GPIO_SET);
-
}
-
}
复制代码
控制外挂LED模块的程序如下:
-
int main(void)
-
{
-
CLIC_Init();
-
System_Clock_Init();
-
GPIO_MODE_Init(GPIOB,PIN1,GPIO_MODE_OUTPUT);
-
GPIO_Write(GPIOB,PIN1,GPIO_SET);
-
while(1)
-
{
-
GPIO_Write(GPIOB,PIN1,GPIO_SET);
-
Delay32M_ms(500);
-
GPIO_Write(GPIOB,PIN1,GPIO_RESET);
-
Delay32M_ms(500);
-
}
-
}
复制代码
经程序的编译与下载,其显示效果如图6和图7所示。
图6熄灭LED模块
图7点亮LED模块
除了GPIO口的输出功能外,还可以用GPIO口的输入功能来识别按键的状态。
在连接薄膜软按键的情况下,使用下面的程序可实现感应控制的作用。
-
int main(void)
-
{
-
CLIC_Init();
-
System_Clock_Init();
-
GPIO_MODE_Init(GPIOB,PIN1,GPIO_MODE_OUTPUT);
-
GPIO_MODE_Init(GPIOB,PIN2,GPIO_MODE_INPUT);
-
GPIO_Write(GPIOB,PIN1,GPIO_SET);
-
while(1)
-
{
-
if(GPIO_Read(GPIOB,PIN2)==0) GPIO_Write(GPIOB,PIN1,GPIO_SET);
-
else GPIO_Write(GPIOB,PIN1,GPIO_RESET);
-
}
-
}
复制代码
经程序的编译与下载,其显示效果如图8和图9所示。
图8熄灭LED模块
图9点亮LED模块
在掌握了GPIO口的使用后,就可以此为基础来模拟I2C接口来驱动I2C接口的OLED屏或SPI接口的LCD5110屏了。