在main.c中的代码
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
/************************************************
ALIENTEK NANO板STM32F103开发板实验1
跑马灯实验-HAL库版本
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
/*下面主函数是使用HAL库函数实现控制IO口输出*/
int GPIO_Pin_tpins[8]={GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7};//定义一个一维数组之后来控制灯的亮灭
void MX_GPIO_Init(void)//初始化引脚将PC0~PC7设置成低电平
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
/*Configure GPIO pins : PC1 PC2 PC3 PC4
PC5 PC6 PC7 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6| GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
int main(void)
{
MX_GPIO_Init();//初始化GPIO接口将PC0~PC7设置低电平
u8 i =0;
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
LED_Init(); //初始化LED
while (1)
{
for(i=0;i<=7;i++)//用for循环来实现循环移位的操作
{
HAL_GPIO_WritePin(GPIOC, GPIO_Pin_tpins[i], GPIO_PIN_SET);
delay_ms(500);
HAL_GPIO_WritePin(GPIOC, GPIO_Pin_tpins[i], GPIO_PIN_RESET);
delay_ms(500);
}
// for(i=0;i<=8;i++)//循环移位
//{
// PCout(i)=1;
// PCout(i-1)=0;
// delay_ms(500);
// }
}
}
// for(i=0;i<=7;i++)
// {
// LED0=0;
// delay_ms(500);
// LED0=1;
// delay_ms(500);
// LED++;
// }
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); //LED0亮
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET); //LED1灭
// delay_ms(500); //延时500ms
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); //LED0灭
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET); //LED1亮
// delay_ms(500); //延时500ms
// }
//}
/*下面主函数使用位带操作实现:*/
/*
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
LED_Init(); //初始化LED
while(1)
{
LED0=0; //LED0亮
LED1=1; //LED1灭
delay_ms(500);
LED0=1; //LED0灭
LED1=0; //LED1亮
delay_ms(500);
}
}
*/
/*
下面主函数使用直接操作结存器方式实现
*/
/*
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
LED_Init(); //初始化LED
while(1)
{
GPIOC->BSRR=GPIO_PIN_0<<16; //LED0亮
GPIOC->BSRR=GPIO_PIN_1; //LED1灭
delay_ms(500);
GPIOC->BSRR=GPIO_PIN_0; //LED0灭
GPIOC->BSRR=GPIO_PIN_1<<16; //LED1亮
delay_ms(500);
}
}
*/
/*
下面主函数使用HAL库函数方式实现流水灯
*/
/*
int main(void)
{
u8 LED=0x00;
u8 i=0;
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
LED_Init(); //初始化LED
while(1)
{
for(i=0;i<8;i++)
{
LED++;
HAL_GPIO_WritePin(GPIOC,LED,GPIO_PIN_RESET);
delay_ms(200);
LED<<=1;//LED依次点亮
}
LED++;
HAL_GPIO_WritePin(GPIOC,LED,GPIO_PIN_RESET);
delay_ms(200);
LED=0xff;//LED全灭
HAL_GPIO_WritePin(GPIOC,LED,GPIO_PIN_SET);
delay_ms(200);
}
}
*/
//#include "sys.h"
//#include "delay.h"
//#include "usart.h"
//#include "led.h"
//int GPIO_Pin_tpins[4][2] = {GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_2, GPIO_PIN_5, GPIO_PIN_1, GPIO_PIN_6, GPIO_PIN_0, GPIO_PIN_7};
//int main(void)
//{
// int pos;
// HAL_Init(); //初始化HAL库
// Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
// delay_init(72); //初始化延时函数
// LED_Init(); //初始化LED
//
//
//
// int i;
// while(1)
// {
// for(i=0;i<4;i++)
// {
// HAL_GPIO_WritePin(GPIOC, GPIO_Pin_tpins[i][0], GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOC, GPIO_Pin_tpins[i][1], GPIO_PIN_RESET);
// delay_ms(500);
//
//
// }
// for(i=0;i<4;i++)
// {
// HAL_GPIO_WritePin(GPIOC, GPIO_Pin_tpins[i][0], GPIO_PIN_SET);
// HAL_GPIO_WritePin(GPIOC, GPIO_Pin_tpins[i][1], GPIO_PIN_SET);
// delay_ms(500);
// }
//
// }
//
//}