2创建工程及点灯

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 headerint main(void){//配置RCC寄存器,使能GPIOC的时钟。GPIO都属于APB2外设RCC->APB2ENR = 0x00000010;//配置寄存器PC13:通用推挽输出模式、输出模式50MHzGPIOC->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:定义了所有中断函数的底层代码。
  • 其他用户文件:用户可以自己定义其他文件进行模块化编程。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python异常、模块和包

Python异常、模块和包 1.了解异常2.异常的捕获方法3.异常的传递4.Python模块5.Python包 1.了解异常 1.1什么是异常 当检测到一个错误是,Python解释器就无法继续执行了,发而出现了一些错误提示,这就是所谓的“异常”,也就是我们常…

【开源软件】最好的开源软件-2023-第26名 Accelerate

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

【精选】小白是如何挖漏洞的(技巧篇)

目录: 怎么找漏洞 找到后如何挖漏洞 关于通杀漏洞N day漏洞的挖掘 漏洞如何提交 每小结都有提供对应的案例,简直不要太nice! 这个月的SRC活动也快开始了,看到群里的小伙伴在问如何找漏洞,SQL注入的漏洞咋找&#x…

慢SQL诊断

最近经常遇到技术开发跑来问我慢SQL优化相关工作,所以干脆出几篇SQL相关优化技术月报,我这里就以公司mysql一致的5.7版本来说明下。 在企业中慢SQL问题进场会遇到,尤其像我们这种ERP行业。 成熟的公司企业都会有晚上的慢SQL监控和预警机制。…

思福迪运维安全管理系统 test_qrcode_b RCE漏洞复现

0x01 产品简介 思福迪运维安全管理系统是思福迪开发的一款运维安全管理堡垒机。 0x02 漏洞概述 由于思福迪运维安全管理系统 test_qrcode_b路由存在命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限&#…

【Docker】vxlan的原理与实验

VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术。它是一种Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟的二层网络。 VXLAN介绍 VXLAN是在底层…

【智能家居】八、监控摄像采集、人脸识别比对进行开门功能点

一、使用 fswebcam 测试 USB 摄像头 二、根据demo来实现功能点 三、功能点编写编译运行实现 四、mjpg实现监控识别 五、V4L2 视频设备 Linux 内核模块的一部分 一、使用 fswebcam 测试 USB 摄像头 a. 安装 fswebcam orangepiorangepi:~$ sudo apt update orangepiorangepi:~…

SSL证书可以有效避免劫持和钓鱼攻击

SSL证书对抗劫持和钓鱼攻击起到重要作用。通过使用SSL证书,网站可以防止黑客篡改网站内容或欺骗用户,确保用户所看到的是真实的网站信息,而不是被篡改的内容或诱导性的信息。这有助于保护用户的隐私和安全,并建立用户对网站的信任…

LeetCode008之字符串转换整数 (相关话题:状态机)

题目描述 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格检查下一个字符(假设还…

一天搞定jmeter入门到入职全套教程之Jmeter分布式测试

随着并发量的增大,一台机器就不能满足需求了,所以我们采用分布式(Master-Slaver)的方案去执行高并发的测试 注意事项: Master机器一般我们不执测试,所以可以拿一台配置差些的机器,主要用来采集…

c 语言 堆的解析(自我理解)!!!堆排序,建堆

目录 1.堆是什么? 2.堆的实现和接口。(小堆) 1.头文件 2.初始化 3.摧毁 4.向上调整(重点) 5.向下调整(重点) 6.插入(重点) 7.删除(重点) …

Linux---虚拟机软件

1. 虚拟机软件的介绍 它是能够虚拟出来计算机的一个软件。 常用虚拟机软件: VmwareVirtualBox 说明: 只有安装了虚拟机软件才可以创建虚拟机,当然通过虚拟机软件还可以创建多个虚拟机。 2. 虚拟机的介绍 就是模拟一个真实的计算机,好比一个虚拟的…

go学习之反射知识

反射 文章目录 反射1、反射的使用场景1)结构体标签的应用2)使用反射机制编写函数的适配器(桥连接) 2、反射的基本介绍-1.基本介绍-2.反射的图解-3.反射重要的函数和概念 3.反射快速入门-1.请编写一个函数,演示对&#…

【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(下)

前言: 这是程序环境和预处理的下半篇文章。至此,关于c语言知识点:从编译到运行的过程已讲解完毕。传送🚪,上半篇: http://t.csdnimg.cn/hvxmr 本章涉及的知识点: 宏和函数对比、命名约定、#undef、命令行定…

C语言—每日选择题—Day46

第一题 1. 下列程序段的输出结果是&#xff08;&#xff09; #include <stdio.h> int main() {int x 1,a 0,b 0;switch(x) {case 0: b;case 1: a;case 2: a;b;}printf("a%d,b%d\n", a, b);return 0; } A&#xff1a;a2,b1 B&#xff1a;a1,b1 C&#xf…

JVM面试

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.JVM 的整体结构2.类加载做了哪些事情?类加载器有哪些&#xff1f;双亲委派和沙箱安全 3.Java虚拟机栈是什么4.方法区的理解HotSpot 中方法区的演进方法区的内部结…

【Spring教程26】Spring框架实战:从零开始学习SpringMVC 之 bean加载控制

目录 1 问题分析2 思路分析3 环境准备4 设置bean加载控制5 知识点1&#xff1a;ComponentScan 欢迎大家回到《Java教程之Spring30天快速入门》&#xff0c;本教程所有示例均基于Maven实现&#xff0c;如果您对Maven还很陌生&#xff0c;请移步本人的博文《如何在windows11下安装…

文件搜索项目演示

演示功能搜索功能1&#xff1a;根据文件名搜索2&#xff1a;根据文件路径搜索3&#xff1a;根据文件名拼音(全拼、首拼)搜索 选择更新目录功能自动初始化和定时更新功能程序文件项目知识介绍 演示功能 搜索功能 1&#xff1a;根据文件名搜索 2&#xff1a;根据文件路径搜索 3…

Linux--操作系统

1. 常见的操作系统 Windowsmac OSLinuxiOSAndroid 2. 操作系统的定义 操作系统直接运行在计算机上的系统软件&#xff0c; 它是控制硬件和支持软件运行的计算机程序。 3. 操作系统的作用 向下控制硬件向上支持软件的运行&#xff0c;具有承上启下的作用。 4.总结 操作系统…

Win10的SVN Adapter V1.0 中黄色感叹号 -- 解决

大部分都问题都可以通过&#xff1a; 关闭 SVN Adapter V1.0 在下载最新的 SVNDrv.sys替换 C:\Windows\System32\drivers 中的同名文件启动 SVN Adapter V1.0 就能成功 但是部分人的电脑 SVN Adapter V1.0 是有感叹号的&#xff0c;说明注册表有问题 先用 CCleaner 修复注册表…