没学会走就先学会跑,先问问自己是不是天才,如果不是就一步一步慢慢来。
1、创建文件夹LED,用于存放工程文件
keil5->Project->New $\mu$Vision project,保存在LED文件夹中,工程文件命名为LED。
2、选择自己所用的芯片型号,(我用的是STM32F103C8t6)
3、勾选固件库
选中:CMSIS>CORE;Device>Startup;>StdPeriphDrivers>Flash;>Framework;>GPIO;>RCC;等
CMSIS>CORE:提供与 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 处理器与外围寄存器之间的接口;
Device>Startup:初始化硬件(比如系统时钟设置),初始化堆栈,安排中断向量表等等,完成这些工作后才执行main函数。
StdPeriphDrivers>Flash;>Framework;>GPIO;>RCC:添加所需要的外设。
4、新建mian.c文件,并添加到工程项目当中。
右击Source Group1文件夹 Add Existing Files to Group 'Source Group1'
5、配置Target,添加方法是点击魔术棒之后,
设置输出HEX文件 ,最终烧录到stm32中。
还需要添加一个全局宏定义标识符。进入 C/C++选项卡,然后在 Define 输入框连输USE_STDPERIPH_DRIVER。(==注意==:如果有多个标识符, 他们之间需要用英文的逗号隔开的)
6、代码
#include "stm32f10x.h"
#define uint unsigned int
#define uchar unsigned char
#define CLOCK 8 //Crystal oscillator is 8M
// xx us delay
void delay_us(uint us)
{
uint n;
while(us--)for(n=0;n<CLOCK;n++);
}
// xx ms delay
void delay_ms(uint ms)
{
while(ms--)delay_us(1000);
}
//Pin configuration
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
/***************************************************************************
main function
***************************************************************************/
int main()
{
//The GPIOC clock enable
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_Configuration();
while (1)
{
GPIO_SetBits(GPIOC,GPIO_Pin_13);
delay_ms(100);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
delay_ms(100);
}
}
7 参考链接
- keil5中新建一个STM32工程
https://blog.csdn.net/xiebaocheng12138/article/details/78056161 - 如何用keil5新建STM32 新工程
https://wenku.baidu.com/view/8fc840f8ac51f01dc281e53a580216fc700a539e.htm - STM32 Keil5建立工程模板步骤
https://blog.csdn.net/ouening/article/details/51542177 - CMSIS 到底是什么?
http://www.eefocus.com/freescale007/blog/13-07/295486_07c15.html - STM32学习笔记(6): 启动代码(Startup Code)
https://blog.csdn.net/Cacti_one/article/details/72811281