1.STM32CubeMX的配置

将PC8-PC15设置为GPIO_Output模式,将PD2也设置为GPIO_Output模式。

通过原理图知,LED(PC8-PC15)低电平有效,锁存器(PD2)高电平有效。
初始化时我将LED设置为高电平,熄灭状态,锁存器设置为高电平不锁存状态。

2.生成文件,打开Keil5,实现一个跑马灯
(1)HAL_Delay()
代码如下
 while (1)
  {
    /* USER CODE END WHILE */
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_11);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_11);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_12);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_12);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_14);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_14);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_15);
		HAL_Delay(50);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_15);
		HAL_Delay(50);
    /* USER CODE BEGIN 3 */
  }在while循环中添加如下代码
HAL_GPIO_TogglePin()函数用于反转引脚电平
HAL_Delay()函数用于延迟,单位为1ms,与嘀嗒定时器有关
(2)寄存器

根据编程手册可知,GPIOx——ODR寄存器对应着输出的值,修改要以十六位形式操作
代码如下
    uint8_t   i = 0;
	uint32_t LED= 0XFFFFFFFF;
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
		for(i=0;i<8;i++)
		{
		   LED = ((0XFFFFFEFF<<i)|(0XFFFFFEFF>>(32-i)));
			 GPIOC->ODR = 0X0000FFFF&LED;
			 HAL_Delay(50);
		}
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */主要的部分就是移位操作以及与和或
(3)定时器

由手册可以看出TIM6,TIM7挂载在APB1线上

配置APB1频率为80MHz

打开定时器6的中断以及配置预分频值和计数值,打开自动装载,将频率设置为1ms


![[神经网络]图神经网络(GNN)](https://img-blog.csdnimg.cn/86e1ac61a8834618b98496a97a681f3c.png)
















