STM32 学习(一)新建工程

本课程使用的stm32型号

 

 引脚定义,有FT能接5v,没有FT能接3.3v

启动配置

 第二种启动模式中,系统存储器中存放了一部分Bootloader程序,该程序可以接收串口的数据,然后刷新到主闪存中,这样就可以使用串口下载程序。

最小系统电路

能工作起来的最基本的电路,晶振 8M 赫兹通过锁相环倍频得到 72 hz;复位模块的 NRST 是低电平复位,当电路刚上电时,电容开始充电,此时 nrst 为低电平,而当电容充满电,由于电容的隔直功能,使得 nrst 电平逐渐升高。启动配置就是芯片上的跳线帽。

软件安装

新建工程

1. 找到启动文件

D:\Users\Desktop\embedded\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

stm32f10x.h:描述芯片外围设备有哪些寄存器以及对应的地址。两个system文件主要用来配置时钟。 

2. 找到内核寄存器描述文件以及内核配置函数

D:\Users\Desktop\embedded\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

3. 添加启动文件

启动文件的选择:

4. 添加头文件路径

5. 添加 main 函数

 

main.c 内容: 

#include "stm32f10x.h"int main(void)
{while(1){}
}

 

勾上 reset and run,这样下载程序后会立马复位并执行: 

6. 使用寄存器点灯

使能 GPIOC 的时钟: 

RCC->APB2ENR = 0x00000010;

配置 pC13 口的模式(pC13 即为 led 的端口),CNF13 配置为通用推挽输出模式,MODE13 配置为输出模式。

GPIOC->CRH = 0x00300000;

接下来就可以给 pC13 口输出数据了,ODR13 为 1,则 pC13 为高电平,反之则为低电平,因为我们需要 led 亮起,所以要使得 pC13 为低电平。

GPIOC->ODR = 0x00000000;

整体代码如下,烧录后可以看到 led2 亮起:

#include "stm32f10x.h"int main(void)
{RCC->APB2ENR = 0x00000010;GPIOC->CRH = 0x00300000;GPIOC->ODR = 0x00000000;while(1){}
}

7. 添加库函数

将库函数源码和头文件复制粘贴到 Library 目录下,然后在 keil 中导入:

 

还需要三个文件如下,conf 文件来配置函数库头文件的包含关系,两个 it 文件用来存放中断函数,粘贴到 User 目录下: 

添加宏定义 USE_STDPERIPH_DRIVER: 

8. 使用库函数进行点灯

代码如下:

#include "stm32f10x.h"int main(void)
{//RCC->APB2ENR = 0x00000010;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//GPIOC->CRH = 0x00300000;GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStruct);//GPIOC->ODR = 0x00000000;GPIO_SetBits(GPIOC, GPIO_Pin_13); // 设置pC13高电平//GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 设置pC13低电平while(1){}
}

9. 工程架构 

复位中断,先调用 SystemInit,再调用 __main。

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

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

相关文章

Unity简单的敌人巡逻方法(NavMeshAgent)

简单的敌人巡逻方法 基于NavMeshAgent的敌人巡逻方法。 private NavMeshAgent eagent;//定义一个寻路private Animator animator;//声明一个动画public Vector3 [] point;//巡逻范围和位置数量private int index;//数组位置private float timer 0 ;void Start(){animator Ge…

c语言-位操作符练习题

文章目录 前言一、n&(n-1)的运用场景(n为整数)二、&1 和 >>的应用场景总结 前言 本篇文章介绍利用c语言的位操作符解决一些练习题,目的是掌握各个位操作符的使用和应用场景。 表1.1为c语言中的位操作符 操作符含义&按位与|按位或^按位异或~按位…

k8s的二进制部署和网络类型

k8s的二进制部署 master01:192.168.233.10 kube-apiserver kube-controller-manager kube-scheduler etcd master02:192.168.233.20 kube-apiserver kube-controller-manager kube-scheduler node01:192.168.233.30 kubelet kube-proxy etc…

在idea中使用git(Gitee)

目录 前言 一、常用远程仓库托管服务 二、gitee使用 1 创建远程仓库 2 配置SSH公钥 ​编辑 ​编辑 3 把本地代码推送到远端 4 其他操作远程仓库 1)克隆 2)抓取和拉取 3)解决合并冲突 三、在idea中使用git 四、场景分析 总结 前言 昨天详细学…

【惠友小课堂】“拇外翻”:大脚趾凸出也是病!得治!

大脚趾凸出的痛谁懂? 有一种尴尬叫不敢脱鞋, 鞋一脱,外翻的脚趾就“原形毕露”…… 这都是“拇外翻”惹的祸。 拇外翻,俗称大脚骨,多发于女性,是大脚趾向外明显倾斜,超过正常生理范围的一种足…

浅谈C4模型

C4模型(C4 Model)是一种用于描述软件系统架构的轻量级模型,其目标是通过简化、清晰和易于理解的方式来表达系统的不同层次的架构信息。C4代表了“上下文”(Context)、“容器”(Container)、“组…

keil软件使用和数据区传送

一、实验目的: 1、掌握keil软件下编写、编译、调试C51程序的方法; 2、掌握片内RAM和片外RAM的数据传送操作 二、实验内容 在keil中编写C51程序,在外部数据存储器从地址100H单元开始存入10条字节型随机数据,再传输到内部数据存…

Illustrator脚本 #015 自动角线

这是一个在画板上自动生成辅助线和角线的脚本,只要单击最右边按钮运行脚本即可。 绿色的为参考线及出血线。 #target "Illustrator" var settings {addTrim : true,addBleedGuide : true,addCenterGuide : true,addCover : false,overlapAlert : false,…

MySQL实战

文章目录 一.基础语法1.1 GROUP BY 一.基础语法 1.1 GROUP BY 在MySQL8.0版本中,默认开启了严格模式,可以通过以下语句开启: SET sql_mode ONLY_FULL_GROUP_BY;严格模式的特殊之处: select后的字段除聚合字段外,必…

Xshell连接ubuntu,从github克隆项目,用Xshell克隆项目

访问不了github:https://blog.csdn.net/liu834189447/article/details/135246914 短暂解决访问问题。 ping不通虚拟机/无法连接虚拟机:https://blog.csdn.net/liu834189447/article/details/135240276 ps: Xshell、ubuntu的粘贴快捷键为 Shift Insert …

51单片机(STC8)-- GPIO输入输出

文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器(PxM0,PxM1)端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制(I/O输出)按键检测(I/O输入) S…

大数据Doris(四十三):创建物化视图

文章目录 创建物化视图 一、首先你需要有一个Base表

深入浅出Java虚拟机

文章目录 总体图类装载子系统一、类的加载过程一、加载二、链接三、初始化 二、类的加载器 运行时数据区一、程序计数器(ProgramCounter)二、虚拟机栈( Java Stack )三、本地方法栈( Native Method Stack )四、堆内存(Direct Memory&#xff…

mysql 与 支持语言的连接驱动 jdbc connector JAR 包

有位网友问我有没有 mysql jdbc驱动 ,我刚开始一脸懵逼,后来明白过来,在网上找了几篇文章看看了解了解,得出如下解决办法: Mysql jdbc 下载: 网址: MySQL :: Download Connector/J 步骤1 &a…

【信息安全原理】——拒绝服务攻击及防御(学习笔记)

📖 前言:拒绝服务攻击(Denial of Service, DoS)是一种应用广泛、难以防范、严重威胁网络安全(破坏可用性)的攻击方式。本章主要介绍DoS的基本概念、攻击原理及防御措施。 目录 🕒 1. 定义&#…

专业级A链接测试特有

A链接普通 A链接添加链接描述带有blank

nginx报错upstream sent invalid header

nginx报错upstream sent invalid header 1.报错背景 最近由于nginx 1.20的某个漏洞需要升级到nginx1.25的版本。在测试环境升级完nginx后,发现应用直接报错502 bad gateway了。 然后查看nginx的errlog,发现: upstream sent invalid head…

“多写多读集群”被攻克,中国数据库产业“越过山丘”

2020年全国两会期间,合肥工业大学应用数学研究所所长檀结庆在媒体采访中提到:“国产数据库只占据不到7%的市场份额,尤其在数据库最核心的交易业务中,鲜有能跟甲骨文同台竞争并实现替换的产品。” 彼时“去IOE”浪潮已经兴起十多年…

echarts 柱状图

记录echarts 柱状图基础案例以及相关配置。 1.基础柱状图 const myChart this.$echarts.init(this.$refs.echartsZx);const option {title: {text: 本周考试记录},//提示框tooltip: {trigger: axis,axisPointer: {type: shadow}},xAxis: {type: category,data: [Mon, Tue, W…

im6ull学习总结(二)Framebuffer 应用编程

1 LCD操作原理 linux中通过framebuffer驱动程序来控制LCD。framebuffer中包含LCD的参数,大小为LCD分辨率xbpp。framebuffer 是一块内存 内存中保存了一帧图像。 关于图像的帧指的是在图像处理中,一帧(Frame)是指图像序列中的单个…