2创建工程及点灯

2023-12-13 04:54:32

1:软件安装:

1关注公众号“纸飞资”,键盘输入keil“”,按照文章要求安装编译软件

2芯片安装:

方式一:离线安装。去Keil公司官网的器件支持包下载页面选择对应的公司及器件型号,然后在Device Family Pack文本框中点击“Download”。下载完成后在本地直接点击.pack文件进行安装即可。这个文件会自动识别Keil5文件的安装目录。
方式二:在线安装,速度取决于网速。打开Keil软件点击“Pack Installer”,等待支持的公司及器件列表加载完成。STMicroelectronics公司列表下包含了所有的STM32芯片型号,而GigaDevice公司、MindMotion公司对于国产STM32芯片的兼容都很不错。然后在右侧的_DFP文件后点击“Install”即可。

3安装STLINK

安装STLINK驱动。可与先将STLINK插入电脑上,看看设备管理器是否识别,若不识别才需要进行后续的操作。STLINK的驱动安装文件在“Keil安装目录→ARM→STLINK→USBDriver→dpinst_amd64.exe(x86是32位的)”;JLINK的驱动安装文件则在“Keil安装目录→ARM→Segger→JLink.exe”。
?

2:此款单片机的开发方式

1.基于寄存器:底层,直接;对于STM32不适用

2.基于标准库:ST公司提供封装

3.基于HAL库:图形化配置STM32

3:新建工程步骤:

?1.建立工程文件夹,Keil中新建工程,选择型号。
2.工程文件夹里建立Start、User文件夹,复制固件库里面的文件到工程文件夹。

  • ? ? Start部分1:启动文件,位于固件库文件夹“.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm”。STM32的程序从启动文件执行。
  • Start部分2:位于固件库目录“.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x”的三个文件。“stm32f10x.h”描述STM32外设寄存器及其对应的地址,作用相当于51单片机中的头文件“REGX52.h”。“system_stm32f10x.h”、“system_stm32f10x.c”主要用于配置时钟,比如配置STM32的主频为72MHz。
  • Start部分3:位于固件库目录“.\Libraries\CMSIS\CM3\CoreSupport”的两个文件。“core_cm3.h”、“core_cm3.c”是内核寄存器的描述文件,并且还带了一些内核的配置函数。
  • User文件夹:存放用户编写的main.c等文件。

3工程里对应建立Start、User等同名称的分组,然后将文件夹内的文件添加到工程分组里。

  • Strart分组:注意启动文件的选择,只需根据下表选择其中一个.s文件。
  • User分组:注意添加main.c文件时,路径要选上User文件夹,否则默认路径在文件外。下面给出main.c文件中的代码:
#include "stm32f10x.h"                  // Device header
int main(void){
 while(1){
 }
}
//注意最后一行必须是空着
  • ?工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹,否则软件找不到.h文件。
  • 点击魔术棒按钮 → C/C++ → Include Path → 右侧的三个点按钮,添加对应的文件夹即可。
  • 要使用STLINK下载程序的话,需要在“魔术棒 → debug → use → ST-Link Debugger”,然后进一步点击右侧的“settings”,在第一个界面“debug”的port选择SW,在第三个界面“Flash Download”勾选Reset and Run”。
  • 最后进行编译,通过。点击编译按钮右侧的“Download”按钮,便可以将程序下载在开发板上。
  • 若报错,可以试一下点击魔法棒,target → ARMCompiler选择V5.06。
  • 注:为了防止乱码问题,可以在扳手工具那里选择UTF-8编码。

建工程:

1:点击“new project”? ? ?,创建一个文件夹,点进去,给工程起名字,选择芯片,新建STRAT添加工程必要文件(启动文件,外设寄存器描述,内核寄存器描述文件),右键添加已经存在的文件到START里,
?2,点击魔术棒按钮,点击C/C++按钮,点击include paths,添加start路径

3.再新建一个user文件,存放main,然后开始

?基于寄存器点灯示例

#include "stm32f10x.h"                  // Device header

int main(void){
  //配置RCC寄存器,使能GPIOC的时钟。GPIO都属于APB2外设
  RCC->APB2ENR = 0x00000010;
  //配置寄存器PC13:通用推挽输出模式、输出模式50MHz
  GPIOC->CRH = 0x00300000;
  //输出数据寄存器PC13:
  GPIOC->ODR = 0x00002000;//LED灭
//  GPIOC->ODR = 0x00000000;//LED亮
  while(1){}
}

基于库函数开发的工程架构

  • startup_xx.s:启动文件。程序执行最基本的文件,使用汇编语言编写,规定了在复位中断函数中,首先执行SystemInit文件,再执行主函数mian。还定义了所有的中断向量表、中断服务函数。
  • 复位中断:整个程序的入口。当STM32上电复位/按下复位键之后,程序就会进入复位中断函数执行。复位中断函数首先执行SystemInit文件,再执行主函数mian,并且在执行过程中,可以被其他中断所打断。当然实际上单片机工作永远不会结束,所以主函数一般会让程序在最后停留在死循环while(1)中。
  • system_xx.c/.h:包含了SystemInit的具体执行代码。
  • main.c:包含了主函数的具体执行代码。
  • stm32f10x_it.c/.h:定义了所有中断函数的底层代码。
  • 其他用户文件:用户可以自己定义其他文件进行模块化编程。

?

文章来源:https://blog.csdn.net/hvbkbb/article/details/134959656
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。