Keil4下使用STM32库V35.docx
《Keil4下使用STM32库V35.docx》由会员分享,可在线阅读,更多相关《Keil4下使用STM32库V35.docx(16页珍藏版)》请在冰豆网上搜索。
![Keil4下使用STM32库V35.docx](https://file1.bdocx.com/fileroot1/2023-1/31/2af78891-88aa-43c5-b47f-3435748549c1/2af78891-88aa-43c5-b47f-3435748549c11.gif)
Keil4下使用STM32库V35
Keil4下使用固件库V3.5关联到建立自己工程
第一步:
下载一个固件库V3.5
第二步:
提取压缩包中的Libraries放到你需要经常存放Keil4工程的地方,方便关联。
例如放在F盘,新建
的STM32文件夹下。
第三步:
打开Keil4,开始新建工程吧。
1.新建一个存放工程的文件夹,再将新建的工程放到此文件夹下。
2.输入文件名后“保存”
3.选取您使用的芯片型号
点“OK”,进入下一环节
4.接着会出现这样的一个提示框,此处是选择是启动文件,但要使用库V3.5,此处点“否”
5.此时Project中出现的是这样
6.重点来了:
选择工具条上的ManageComponents,下图圈中
7.接着我们会在此完成文件添加
在”Groups”中新建3个文件夹
1.StartUp
2.Library
3.User
用于分类存放相关文件
8.选中“Groups”中的“StartUp”文件,然后再在Files框下,点击“AddFile”找到目录下刚才存放的Libraries文件并打开,找到路径如下,并选中startup_stm32f10x_md.s
"F:
\STM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s"
同理,我们添加Library文件夹
添加:
stm32f10x_GPIO.cstm32f10x_rcc.cstm32f10x_tim.c
"F:
\STM32\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c"
最后添加我们的“User”文件夹
此处需要添加一个系统文件system_stm32f10x.c路径如下:
"F:
\STM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c"
添加完成这个文件后,可以点“OK”结束了
现在我们的Project中有如图文件:
9.新建我们的main.c
点红框处新建一个Txet1文件,保存为“main.c”
记得加“.c”后缀
10.右击Project中的“User”出现有图菜单点击“AddFilestoGroup‘User’…”将保存的main.c文件添加到“User”中
至此文件添加完成,如果还需要添加文件,可重复步骤8.9
11.将我们添加的文件与固件库关联起来
点击工具条的“TargetOptions”
弹出右图框
12.按蓝色标记步骤,一步一步设置
第一步:
点击“IncludeParts”的浏览按钮出现“FolderSetup”
新建链接如右图步骤
一直浏览到右图文件夹,并选中“确定”:
第二步:
重复第一步骤新建找到路径,选中“inc”文件夹
至此,关联固件库完成:
如果需要添加自己的库可以采用此类方式,将“.h头文件”关联进来
13.接下来是让自己的文件夹更合理,分类更细致的步骤
第一步:
点击
“Output”
下“SelectFolderObjects”,并新建一个“Output”文件夹双击打开点“OK”完成
第二步:
点击“Listing”下“SelectFolderforListing..”后新建一个listing文件夹,双击打开,点“OK”完成
14.选择适合自己开发板的下载器
第一步:
点击“Debug”,出现如右图选择自己的调试器。
选择“Adapter”
“Port”
“MaxClock”
“ResetOption“
第二步:
选择下载器
右图步骤:
选择自己的芯片容量,这儿选的是中等容量
选完“OK”结束
最后点击他的“OK“完成所有前期准备
20.开始编写程序运行
21.编译通过后软件仿真一下
第一步:
选择菜单栏中“Debug“按钮:
第二步:
选择软件仿真:
逻辑分析仪
第三步:
点“SetUp“,新建一个输入管脚名“porta.6”,选择PA6引脚作为输出观察
第四步:
点击“Run”开始运行
第五步:
结果
最后附上此例子程序
/**********************************
*文件名:
main.c
*说明:
1.产生一个PWM波;
*2.输出频率=72MHz/预分频(TIM_Prescaler)/计数周期(TIM_Period)
*完成者:
Lijinquan
*University:
NCUT
完成时间:
31/07/2012
************************************/
#include"stm32f10x.h"
#include"stm32f10x_tim.h"
voidTimer3_GPIO_Configuration(void);
voidTimer3_BASE_Configuration(void);
voidTimer3_PWM_Configuration(void);
intmain(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
Timer3_GPIO_Configuration();
Timer3_BASE_Configuration();
Timer3_PWM_Configuration();
}
voidTimer3_GPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure_TIMER3PWM_PORTA;
GPIO_InitStructure_TIMER3PWM_PORTA.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure_TIMER3PWM_PORTA.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure_TIMER3PWM_PORTA.GPIO_Mode=GPIO_Mode_AF_PP;//复用功能的推挽输出,片内、外设功能
GPIO_Init(GPIOA,&GPIO_InitStructure_TIMER3PWM_PORTA);
}
voidTimer3_BASE_Configuration(void)
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_DeInit(TIM3);
TIM_InternalClockConfig(TIM3);//TIM_Prescaler:
指定用于划分的TIM时钟的分频值。
TIM_TimeBaseStructure.TIM_Prescaler=72;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period=50000-1;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
TIM_InternalClockConfig(TIM3);//采用内部时钟给TIM3提供时钟源
}
voidTimer3_PWM_Configuration(void)
{
unsignedintT3CH1_DC=50;
TIM_OCInitTypeDefTIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=(T3CH1_DC*50000)/100;//写比较值(占空比输入)
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OC1Init(TIM3,&TIM_OCInitStructure);
TIM_ARRPreloadConfig(TIM3,ENABLE);
TIM_Cmd(TIM3,ENABLE);
}