前言
任务需求:使用stm32c8点亮两个led小灯并实现闪烁效果
注:本次任务包含CubeMX+hal库以及单独使用标准库两种写法完成代码构建。并最后通过Proteus仿真测试运行结果
提示:以下是本篇文章正文内容,下面案例可供参考
一、CubeMX生成keil5工程文件
工程配置: 时钟配置:
生成Keil5工程文件:注意:路径及名称不能有中文
hal库完善代码逻辑
注意:前面我们通过cubemx将工程硬件配置完毕,所以这里只需要完善软件逻辑层代码
while (1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay(500);
}
编译并运行
二、标准库写法及完善代码逻辑
#include "stm32f10x.h"
void Delay(unsigned int count){
unsigned int i;
for(;count!=0;count--){
i=5000;
while(i--);
}
}
int main(){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_9);
while(1){
GPIO_ResetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);
Delay(500);
GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);
Delay(500);
}
}
三、Proteus仿真测试
对之前两种写法生成的hex文件分布测试均完成本次目标
选择生成的hex文件并将时钟设置为8M
运行仿真:
|