STM32 F103
imxlw00
这个作者很懒,什么都没留下…
展开
-
08、OLED实验(模拟IIC)
硬件连接:PA5 SCLPA7 SDAGPIO初始化/* @brief 初始化OLED与单片机的IO接口 @param 无 @retval 无 */static void OLED_GPIO_Init(void){ ...原创 2020-03-07 19:54:06 · 998 阅读 · 0 评论 -
07、 串口实验(库函数)
usart_init//初始化 IO 串口 1//bound:波特率void usart_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //①串口...原创 2020-02-25 16:30:11 · 265 阅读 · 0 评论 -
06、 串口实验(寄存器)
USART1_Initvoid USART1_Init (void) { //1.使能时钟 RCC->APB2ENR |= 1 << 2; //GPIOA 时钟使能 RCC->APB2ENR |= 1 << 14; //USART1 时钟使能 //2.初始化GPIO GPIOA->CRH &= ~(0x0F << 4...原创 2020-02-25 09:57:26 · 541 阅读 · 0 评论 -
06、原子战舰 NVIC 中断优先级管理
NVIC中断优先级分组CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。在 STM32F103 系列上面,又只有 60 个(在 107 系...原创 2020-02-23 18:58:47 · 278 阅读 · 0 评论 -
05、原子战舰 系统时钟配置函数
STM32 时钟系统的配置初始化在 system_stm32f10x.c 中的 SystemInit()函数。SystemInitSetSysClockSetSysClockTo72函数最核心的功能也就是设置这5点(1) 设置HCLK,HCLK = SYSCLK(2) 设置PCLK2,PCLK2 = HCLK(3) 设置PCLK1,PCLK1 = HCLK / 2(4) 设...原创 2020-02-23 16:24:38 · 277 阅读 · 0 评论 -
04、原子战舰 STM32的时钟系统
时钟系统是 CPU 的脉搏,就像人的心跳一样。时钟系统框图在 STM32 中,有五个时钟源,为 HSI、 HSE、 LSI、 LSE、 PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这 5 个中 HIS, HSE 以及 PLL 是高速时钟, LSI 和 LSE 是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中 HSE 和 L...原创 2020-02-23 15:44:12 · 291 阅读 · 0 评论 -
03、原子战舰 按键输入实验(寄存器)
2原创 2020-02-23 10:17:32 · 340 阅读 · 0 评论 -
02、原子战舰 蜂鸣器实验(寄存器)
硬件设计蜂鸣器的驱动信号连接在 STM32F1 的 PB8 上。beep.h我们这里通过位带操作来实现某个 IO 口的输出控制, BEEP 就直接代表了 PB8 的输出状态。我们只需要令 BEEP=1,就可以让蜂鸣器发声。#ifndef __BEEP_H#define __BEEP_H#include "sys.h"#define BEEP PBout(8) // BEEP,蜂鸣器...原创 2020-02-22 19:45:37 · 405 阅读 · 0 评论 -
01、原子战舰 点亮LED(寄存器)
位操作指定的某一位数置1x|=(1<<y)指定的某一位数置0x&=~(1<<y)硬件设计led.c#include "led.h"//初始化 PB5 和 PE5 为输出口.并使能这两个口的时钟//LED IO 初始化void LED_Init(void){RCC->APB2ENR|=1<<3; //使能 POR...原创 2020-02-22 17:43:32 · 239 阅读 · 0 评论 -
13、stm32F103 GPIO的8种工作模式
stm32 官方固件库的定义:/** * @brief Configuration Mode enumeration */typedef enum{ GPIO_Mode_AIN = 0x0, /* 模拟输入 */ GPIO_Mode_IN_FLOATING = 0x04, /* 输入浮空 */ GPIO_Mode...原创 2020-02-18 19:46:37 · 1460 阅读 · 0 评论 -
12、stm32F103 GPIO写操作
函数GPIO_SetBits设置高电平例:/* Set the GPIOA port pin 10 and pin 15 */GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函数GPIO_ResetBits设置低电平例:/* Clears the GPIOA port pin 10 and pin 15 */GPIO_ResetB...原创 2020-02-14 19:54:39 · 890 阅读 · 0 评论 -
11、stm32F103 点亮LED(库函数)
硬件设计这些 LED 灯的阴极都是连接到 STM32 的 GPIO 引脚,只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。软件设计我们把 LED 灯控制相关的代码独立分开存储,方便以后移植。在“工程模板”之上新建“ led.c”及“ led.h”文件,这些文件也可根据您的喜好命名。使能 GPIO 端口时钟;初始化 GPIO 目标引脚为推挽输出模式;编写简...原创 2020-02-13 10:19:32 · 661 阅读 · 0 评论 -
10、stm32F103 点亮LED(库函数配置)
野火教程下载固件库参考启动文件一节本地工程文件夹为了工程目录更加清晰,我们在本地电脑上新建一个“工程模板”文件夹,在它之下再新建 6 个文件夹,具体如下:添加文件新建工程后,添加组文件夹。从 ST 标准库中复制到工程模版对应文件夹的目录下,然后在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。添加处理宏及编译器编译的时候查找的头文件路径...原创 2020-02-13 10:04:55 · 366 阅读 · 0 评论 -
9、stm32F103 点亮LED(结构体)
时钟结构体程序原创 2020-02-12 20:26:59 · 338 阅读 · 0 评论 -
8、stm32F103 点亮LED(存储器映像)
M3内核系列有4G内存空间,地址范围0x0000 0000到0xFFFF FFFF,分成8个块(Block0~Block7),每块大小为512M。总线地址其实APB1、APB2和AHB都是在外设地址(0x4000 0000)偏移,分别偏移0x0,0x0001 0000和0x0002 0000。那么定义#define PERIPH_BASE 0x4000 0000//总线基地址...原创 2020-02-12 20:08:09 · 240 阅读 · 0 评论 -
7、stm32F103 点亮LED(寄存器文明版)
打开时钟配置输出模式输出低电平程序定义头文件原创 2020-02-12 19:30:32 · 223 阅读 · 0 评论 -
4、stm32F103 启动文件
简介启动文件名为“ startup_stm32f10x_hd.s”的文件,它里边使用汇编语言写好了基本程序,当STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境,所以我们把这个文件称为启动文件。startup_stm32f10x_hd.s 文件由官方提供,一般有需要也是在官方的基础上修改,不会自己完全重写。该文件从 ST 固件库里面找到,找到该文件后把启动...原创 2020-02-12 17:30:03 · 9342 阅读 · 0 评论 -
6、stm32F103 点亮LED(寄存器野蛮版)
如何点亮LED(PC13)打开时钟从图可以看到时钟控制的起始地址是0x40021000。那么RCC_APB2ENR的基地址是0x4002 1000,加上偏移地址后是0x4002 1018。如何把时钟第四位变成1?(unsigned int)0x4002 1018 |=(1<<4);//打开时钟配置输出先将对应控制位(20~23)清零,在根据需要配置(unsigne...原创 2020-02-12 17:29:55 · 362 阅读 · 0 评论 -
5、stm32F103 寄存器
寄存器配置在提供的“STM32F10x系列编程手册(中文)”手册中看到GPIO寄存器7种类型。先解释下(GPIOx_CRL)(x=A…E)的意思。stm32f103引脚有多有少,多则144个,少则48个(我用的板子)。所以会把这些引脚分成组,A、B、C、D…每组最多16个引脚,注意,是最多,并不是一定要有16个引脚!在官方提供的手册中可以看到GPIOC的地址范围是0x40011000~0...原创 2020-02-12 17:29:00 · 3693 阅读 · 0 评论 -
3、stm32F103 Keil配置
配置魔术棒选项卡很多人串口用不了 printf 函数,编译有问题,下载有问题,都是这个步骤的配置出了错。Create HEX FileOutput 选项卡中把输出文件夹定位到我们工程目录下的 output 文件夹(可选),如果想在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。Configuration在工具栏选择“Edit”->“Config...原创 2020-02-12 15:18:43 · 897 阅读 · 0 评论 -
2、stm32F103 建立工程
新建工程首先在合适盘符建立文件夹,取名为“template”。双击keil软件,在工具栏找到“project”—>“New uvision Project”。选择 CPU 型号弹出如下图,点击下图中的取消(cancel)即可。添加文件写程序,先保存,快捷键“ctrl+s”。弹出保存界面,取名为“main.c”新建完文档后,需要跟工程进行关联。关联过程如下图,双击“So...原创 2020-02-12 15:11:47 · 209 阅读 · 0 评论 -
1、stm32F103 开发环境搭建
获取 KEIL5 安装包KEIL5 的安装比起 KEIL4 多了一个步骤,必须添加 MCU 库,不然没法使用。KEIL5 的安装包,到 KEIL 的官网下载: https://www.keil.com/download/product/安装 KEIL5安装 STM32 芯片包KEIL5 不像 KEIL4 那样自带了很多厂商的 MCU 型号, KEIL5 需要自己安装。官网下载...原创 2020-02-12 15:03:38 · 1518 阅读 · 1 评论