第一步 新建工程文件夹
所有文件夹存放的内容:
第二步 拷贝/新建工程相关文件
1、Drivers(创建如下文件夹,除readme.txt)
文件夹存放的内容:
2、Middlewares和output暂时不需要创建(目前用不到)
3、Projects(创建MDK-ARM文件夹)
4、User(这里是只把需要的.c/.h文件拿过来,全部都复制过来会导致项目文件过大)
第三步 打开Keil5新建工程
1、在此路径下进行新建工程,点击保存即可
2、选择自己的开发板型号,我是战舰STM32F103ZET6
3、这边没啥用,直接点取消就行
4、添加文件(下图为添加成功的截图,可以对照左侧项目文件)
注意:main.c文件除外,其他都应在此步添加完成
第四步 设置魔法棒
此图为魔法棒所有选项卡需要设置的功能
1、Target选项卡:根据自己的开发板最大晶振频率设置,我的板子是8.0Mhz
2、Output选项卡:设置输出路径,勾选生成hex文件
3、Listeing选项卡:和上一步相同
4、C/C++选项卡:设置全局宏定义,设置优化等级,C99Mode,设置头文件包含路径
5、Debug选项卡:选择自己的仿真器工具并点击右侧settings进行配置
这边注意端口的选择和最大时钟频率
6、Utilities选项卡
第五步 创建main.c文件并加入到工程的User目录下
1、创建main.c
2、仿照第三步的第四条,将main.c文件加入到工程中
最终在main.c进行编写代码即可,此处附上测试代码
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
void led_init(void); /* LED初始化函数声明 */
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
delay_init(72); /* 延时初始化 */
led_init(); /* LED初始化 */
while(1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); /* PB5置1 */
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET); /* PE5置0 */
delay_ms(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET); /* PB5置0 */
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET); /* PE5置1 */
delay_ms(500);
}
}
/**
* @brief 初始化LED相关IO口, 并使能时钟
* @param 无
* @retval 无
*/
void led_init(void)
{
GPIO_InitTypeDef gpio_initstruct;
__HAL_RCC_GPIOB_CLK_ENABLE(); /* IO口PB时钟使能 */
__HAL_RCC_GPIOE_CLK_ENABLE(); /* IO口PE时钟使能 */
gpio_initstruct.Pin = GPIO_PIN_5; /* LED0引脚 */
gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出 */
gpio_initstruct.Pull = GPIO_PULLUP; /* 上拉 */
gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */
HAL_GPIO_Init(GPIOB, &gpio_initstruct); /* 初始化LED0引脚 */
gpio_initstruct.Pin = GPIO_PIN_5; /* LED1引脚 */
HAL_GPIO_Init(GPIOE, &gpio_initstruct); /* 初始化LED1引脚 */
}
课上给的参考版工程
链接:https://pan.baidu.com/s/1MUkSk0-GtwpLyD4IMJq4dA
提取码:fr9b