具体的代码如下:
#include "led.h" // Device header
#include "SysTick.h"
int main(
SysTick_Init(72);
Led_Init();
while(1)
{
GPIO_Write(GPIOC,0x0001);
delay_ms(500);
GPIO_Write(GPIOC,0x0002);
delay_ms(500);
GPIO_Write(GPIOC,0x0004);
delay_ms(500);
GPIO_Write(GPIOC,0x0008);
delay_ms(500);
GPIO_Write(GPIOC,0x0010);
delay_ms(500);
GPIO_Write(GPIOC,0x0020);
delay_ms(500);
GPIO_Write(GPIOC,0x0040);
delay_ms(500);
GPIO_Write(GPIOC,0x0080);
delay_ms(500);
}
}
具体遇到的问题是delay函数的不一致,即江科大跟普中的延时函数写的不一样,普中需要现在main函数中加上SysTick_Init(72);一句。
另外,代码可优化如下:
#include "SysTick.h"
int main()
{
u8 i;
u8 arr[8]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080};
SysTick_Init(72);
Led_Init();
while(1)
{
for(i=0;i<8;i++)
{
GPIO_Write(GPIOC,arr[i]);
delay_ms(500);
}
}
}
HAL库代码如下
while (1)
{
int i;
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
for(i=0;i<8;i++)
{
HAL_Delay(1000);
switch(i){
case 0:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 1:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 2:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 3:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 4:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 5:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 6:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET); HAL_Delay(1000);
break;
case 7:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_RESET); HAL_Delay(1000);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET); HAL_Delay(1000);
break;
}
}
建立数组利用for循环即可,原理图如下: