STM32开发环境

STM32开发环境


宗旨:技术的学习是有限的,分享的精神是无限的。


一、MDK安装   

        MDK 是一个集代码编辑,编译,链接和下载于一体的集成开发环境( KDE )。MDK 这个名字我们可能不熟悉,但说到 KEIL ,学过 51 的朋友就再熟悉不过了。后来 KEIL 被 ARM 公司收购之后就改名为 MDK 了,所以学过 51 的朋友是很快就可以熟悉这个开发环境的。安装完 MDK 开发环境后,在下载程序的时候会有 40K 的代码限制,我只需要和谐下即可搞定:)。KEIL_Lic.exe,点击 KEIL_Lic.exe ,在弹出的界面中的 CID 选项框中填入 MDK 的 CID( MDK 的 CID 在 MDK 开发环境中的菜单栏 File\LicenseManagemant  中获取到),在Target 下拉框中选择 ARM ,然后点击 Generate 按钮,复制产生的 CID Code ,然后回到 MDK 开发环境中的菜单栏 File\LicenseManagemant  中,把刚刚在注册机复制到的CID Code 粘贴到 New License ID Code(LIC): 框中,然后点击 Add LIC ,,点击 close, 大功告成 :)

 

二、用到的一些小工具

1amo的编程小工具集合:我平时编程和设计时常用的小工具集合。

2Axialis IconWorkshop(图标制作软件)

3C2B转换助手 V1.1

4CH340驱动(USB串口驱动)_XP_WIN7共用

5GIF2BMP

6JLINK驱动

7MDK5

8PCtoLCD2002完美版——字模软件

9winhex

10SSCOM——串口调试助手

11、网络调试助手V3.8.exe——网络调试助手

 

三、硬件资源(野火STM32开发板)

1、CPU—— STM32F103ZET6:32位微控制器,cortex M3架构,512KFlash,64KRAM,72MHZ主频,3个12位A/D转换器,1个12位D/A转换器,12通道DMA(支持定时器/ADC/DAC/SDIO/I2S/SPI/I2C/UART),144引脚,112个快速IO口,11个定时器,2个I2C,5个UART,3个SPI,CAN接口,SDIO接口,USB

2、JTAG:20pinJTAG下载口

3、RTC:带点池的RTC电池座

4、I2C  EEPROM: —— AT24C02

5、SPI:2M FLASH W25X16(兼容W25Q16)

6、SDIO:TF卡接口

7、以太网:ENC28J60(10M) + HR911105A(网络变压器)

8、RS232:UART

9、RS485:6LBC184,引出485A与485B端子

10、CAN:收发器TJA1050,引出CANH和CANL

11、AD/DA:

12、PWM:

13:液晶接口:

14、摄像头接口:OV7725模块

15、三轴加速接口:MMA7455模块

16、无线接口:2.4GNRF24L01 + 模块

17、音频接口:MP3模块

18、zigbee接口:CC2530

19、WIFI接口:Mxchip EMW系列

 

四、库开发—— STM32 3.5版库

        STM32 库是由 ST 公司针对 STM32 提供的函数接口,库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。

1core_cm3.c文件

        CMSIS 标准的核内设备函数层 的 M3 核通用的源文件 core_cm3.c 和头文件 core_cm3.h,它们的作用是为那些采用 Cortex-M3 核设计 SOC 的芯片商设计的芯片外设提供一个进入 M3 内核的接口。这两个文件在其它公司的 M3 系列芯片也是相同的。

        core_cm3.c 文件还有一些与编译器相关条件编译语句,用于屏蔽不同编译器的差异。里面包含了一些跟编译器相关的信息,如: RealView Compiler(RVMDK), ICC Compiler (IAR), GNU Compiler。所有 CM3 芯片的库都带有这个文件。

2system_stm32f10x.c文件

        设置系统时钟和总线时钟, M3 比 51 单片机复杂得多,并不是说我们外部给一个 8M 的晶振, M3 整个系统就以 8M 为时钟协调整个处理器的工作。我们还要通过 M3 核的核内寄存器来对 8M 的时钟进行倍频,分频,或者使用芯片内部的时钟。PLL锁相环。

3stm32f10x.h文件——底层文件

        处理器厂商都会将对内存的操作封装成一个宏,即我们通常说的寄存器,并且把这些实现封装成一个系统文件。

4、启动文件——选择startup_stm32f10x_hd.s

cl:互联型产品,stm32f105/107 系列
vl:超值型产品, stm32f100 系列
xl:超高密度(容量) 产品, stm32f101/103 系列
ld:低密度产品, FLASH 小于 64K
md:中等密度产品, FLASH=64 or 128
hd:高密度产品, FLASH 大于 128

启动文件是一段汇编程序,建立合适的环境。作用:

(1) 初始化堆栈指针 SP;

(2) 初始化程序计数器指针 PC;

(3) 设置堆、栈的大小;

(4) 设置异常向量表的入口地址;

(5). 配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没
有外部 SRAM);

(6) 设置 C 库的分支入口__main(最终用来调用 main 函数);

(7) 在 3.5 版的启动文件还调用了在 system_stm32f10x.c 文件中的SystemIni() 函数配置系统时钟。

5inc/src文件夹

        CMSIS 的设备外设函数,基础外设的驱动文件。—— 库函数

         一个特别的文件misc.c文件:提供了外设对内核中的 NVIC(中断向量控制器)的访问函数,在配置中断时用到。

6stm32f10x_it.c stm32f10x_conf.h文件

         stm32f10x_it.c:编写中断服务函数,定义了部分中断接口。

         stm32f10x_conf.h:配置使用了什么外设的头文件,用这个头文件我们可以很方便地增加或删除外设驱动函数库。

7、库文件间的关系





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

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

相关文章

机器学习面试——XGBoost,GBDT,RF(上)

1、常见的集成思想 bagging:基学习器之间并行训练,且学习器之间没有依赖,像是集体决策的过程,每个个体都进行单独学习,再通过投票的方式做最后的集体决策。常见的算法有随机森林 boosting:基学习器之间串…

听说有人不了解柔性数组

1 引言 定长数组包在平时的开发中,缓冲区数据收发时,如果采用缓冲区定长包,假定大小是 1k,MAX_LENGTH 为 1024。结构体如下:// 定长缓冲区 struct max_buffer {int len;char data[MAX_LENGTH]; };数据结构的大小 &…

Transformer模型拆解分析

资源来自:DataWhale 学习资料 最近看了DataWhale 的Transformer图解,突然对Transformer的结构图有了更加清晰的理解,特此记录。 1、大框架 Transformer是由6个encoder和6个decoder组成,模型的具体实现是model变量里边&#xff0…

设计模式学习笔记六:.NET反射工厂

1. 简述 通过前面的学习,我们以传统的方式实现了简单工厂,工厂方法和抽象工厂,但是有些场合下如此处理,代码会变得冗余并且难以维护。假设我们要创建交通工具。可以是汽车,火车,轮船等&#xff…

在unity 中,使用http请求,下载文件到可读可写路径

在这里我用了一个线程池,线程池参数接收一个带有object参数的,无返回值的委托 ,下载用到的核心代码,网上拷贝的,他的核心就是发起一个web请求,然后得到请求的响应,读取响应的流 剩下的都是常见的…

在tinyalsa上抓取音频

我们经常会遇到这样的问题,应用读取到的音频有问题,需要在tinyalsa里面读取音频来确认是底层音频有问题,还是应用处理之后存在的问题。所以,这个patch就出现了代码的逻辑很简单,主要是在pcm_read的时候,同时…

STM32——GPIO(1)

STM32——GPIO 宗旨:技术的学习是有限的,分享的精神是无限的。 【对单片机的操作就是控制IO口】 一、GPIO(通用输入输出口) 1、选定需要的引脚(对应哪一个IO口); 2、配置需要的功能&#xf…

【opencv学习笔记八】创建TrackBar轨迹条

createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便。首先大家要记住,它往往会和一个回调函数配合起来使用。先看下他的函数原型: int createTra…

父母悄悄给自己买房,我很生气,要怎么调整心态?

——问题我是独生子,今年满24岁刚上研一(普通211)。家庭四川小城市,情况一般,父母二人体制内月薪总计一万元以内,家里积蓄20W-30W,公积金情况不清楚。从小母子关系比较僵硬,母亲小学…

语音处理入门——语音的声学处理

语音的声学处理通常称为特征提取或者信号分析,特征是表示语音信号的一个时间片的矢量。常见的特征类型有LPC(线性预测编码)特征和PLP(感知线性预测编码),该特征称为声谱特征,使用形成波形的不同…

基础呀基础,用二极管防止反接,你学会了吗?

使用新的电源,第一次给设备供电时,要特别注意电源的正负极性标注。比如电源适配器,铭牌上面有标注插头的极性。这个符号说明插头的里面是正极,外面是负极,即“内正外负”。但是也有反过来的,下面这款是“内…

李宏毅的可解释模型——三个任务

1、问题 观看了李宏毅老师的机器学习进化课程之可解释的机器学习,课程中对主要是针对黑盒模型进行白盒模型转化的技巧和方法进行了简单介绍,详细细节可以参考《Interpretable Machine Learning》。像一些线性模型、树形模型是可解释的ML model&#xff…

柔性数组和环形队列之间的故事

之前的文章,讲解了柔性数组,有很多人留言,提到一些问题。刚好,之前发关于环形队列的文章有些问题,这次刚好拿出来一起说一下,并用柔性数组实现一个环形队列。柔性数组的上一篇文章环形队列C语言实现文章1、…

STM32——时钟系统

STM32——时钟系统 宗旨:技术的学习是有限的,分享的精神是无限的。 一、时钟树 普通的MCU,一般只要配置好GPIO 的寄存器,就可以使用了。STM32为了实现低功耗,设计了非常复杂的时钟系统,必须开启外设时钟才…

目标检测发展路程(一)——Two stage

目标检测是计算机视觉领域中非常重要的一个研究方向,它是将图像或者视频中目标与其他不感兴趣的部分进行区分,判断是否存在目标,确定目标位置,识别目标种类的任务,即定位分类。传统的目标检测模型有VJ.Det[1,2],HOG.De…

都2021年了,c/c++开发竟然还能继续吃香??

年后就迎来了金三银四,你准备好2021年的跳槽涨薪计划了吗?今天我就来给大家分享,c/c作为老牌开发常青树,还能与java/python/go较较劲的岗位和技术在哪里!同时,给大家整理了2021年系统全面技术学习资料。文末…

目标检测模型——One stage(YOLO v5的模型解析及应用)

1. 简介 目标检测分为Two stage和One stage,只使用一个网络同时产生候选区域并预测出物体的类别和位置,所以它们通常被叫做单阶段检测算法(One stage)。本篇文章只讲One stage模型,常见的模型有YOLO,SSD。 目标检测发…

腾讯回应QQ读取用户浏览器历史记录

腾讯QQ官方认证账号在知乎回应“QQ扫描读取所有浏览器的历史记录”表示,PC QQ存在读取浏览器历史用以判断用户登录安全风险的情况,读取的数据用于在PC QQ的本地客户端中判断是否恶意登录。所有相关数据不会上传至云端,不会储存,也…

OCR系列——总体概述

最近参加了百度Paddle的动手学OCR课程,特此做一个学习总结。 1. 简介 OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向,传统的OCR一般面向扫描文档类对象,现在的OCR是指场景文字识…

STM32——系统滴答定时器

STM32——系统滴答定时器 宗旨:技术的学习是有限的,分享的精神是无限的。 一、SysTick【内核中】 【风格:先描述一下库对寄存器的封装,再举例实现某些功能】 SysTick定时器被捆绑在NVIC中,用于产生SysTick异常&#…