收线是利用Proteus8.15 绘制仿真的电路图
接着设置CubeMX中的用到的端口
难后生成keil工程文件,添加一部分代码,完成流水灯的操作
把代码也展示一下吧!需要写的只有在main函数中的while循环中。
while (1)
{
/****************************************************************
// 下面是电平翻转函数, 端口是0的话变成1, 是1的话变成0
//HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
HAL_GPIO_TogglePin(led1_GPIO_Port, led1_Pin); // 电平翻转函数
//HAL_Delay(uint32_t Delay)
HAL_Delay(200); // 延时函数(200毫秒)
******************************************************************/
//下面是电平置位函数 可以设置成0或1
//HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_RESET); // led1 置0
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_RESET); // led2 置0
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_RESET); // led3 置0
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_RESET); // led4 置0
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_RESET); // led5 置0
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_RESET); // led6 置0
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_RESET); // led7 置0
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET); // led8 置1
HAL_Delay(100); // 延时函数(200毫秒)
HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); // led1 置1
HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET); // led2 置1
HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET); // led3 置1
HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET); // led4 置1
HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET); // led5 置1
HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET); // led6 置1
HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET); // led7 置1
HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_RESET); // led8 置0
HAL_Delay(100); // 延时函数(200毫秒)
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
下面是使用的函数的来源:
这是延时函数的来源:
下面是GPIO中置位函数的来源:
按照上面的样子编译后导入proteus中就能模拟流水灯效果了。