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)
















