首先画电图,如下:(会话最小系统后就可以不画了,如果要是画实物的话必须要有的,不能忘,模拟就无所谓了)
然后是CubeMX设置时钟
这次使用的是内部8M时钟,这样能避免proteus闪退的情况,不然会很烦人的,一直在那闪退。
然后设置LED灯和按键:
下面就是在主函数中的死循环中添加点代码,就好啦!
/* USER CODE BEGIN WHILE */
while (1)
{
GPIOA->ODR =0xffff;
if(HAL_GPIO_ReadPin(key1_GPIO_Port, key1_Pin)==0) // 读取按键1的值如果变成了低电平0就执行:
{
GPIOA->ODR = 0x00fe; //1111 1110 0xfe 这里是对应从PA7到PA0的每一个端口的值 最后为0就是PA0=0
}
if(HAL_GPIO_ReadPin(key2_GPIO_Port, key2_Pin)==0) // 读取按键2的值如果变成了低电平0就执行:
{
GPIOA->ODR = 0x00fd; //1111 1101 0xfd 这里是对应从PA7到PA0的每一个端口的值 右向左第二位为0就是PA1=0
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
最后就是导入proteus中仿真就行了:
最终结果就是按下1号按键LED1亮,松开熄灭。 按下2号按键LED2亮,松开熄灭。