![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【STM32】STM32F1标准库开发
文章平均质量分 60
对M3内核的STM32F103ZET6做标准库开发
功成洗衣机
我本将心向明月,奈何明月照沟渠。羌笛何须怨杨柳,春风不度玉门关。
展开
-
【洋桃一号板】STM32F103CBT6使用DMA让数码管显示ADC的值
DMA测试ADC,在数码管中显示原创 2023-04-12 01:00:17 · 1231 阅读 · 3 评论 -
【洋桃一号板】STM32F103CBT6标准库函数驱动TM1640点亮数码管
使用STM32F103CBT6驱动TM1640点亮共阴极数码管原创 2023-04-11 22:42:01 · 3060 阅读 · 0 评论 -
【洋桃一号板】关于洋桃一号开发板的一些小吐槽
洋桃一号开发板的吐槽原创 2023-04-11 00:25:02 · 1635 阅读 · 4 评论 -
两种编写代码风格方式对比
编码风格原创 2023-01-03 18:01:31 · 550 阅读 · 0 评论 -
STM32F103ZET6---延时函数的三种方式,软件延时、滴答定时器、定时器非中断
延时函数的几种方法原创 2023-01-03 16:52:08 · 4910 阅读 · 2 评论 -
STM32F103ZET6【标准库函数开发】------05.通用定时器TIM5四个通道输出PWM信号
通用定时器TIM5四个通道输出PWM信号原创 2022-10-20 00:24:04 · 1344 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------05.通用定时器TIM2四个通道输出PWM信号
通用定时器TIM2四个通道输出PWM信号原创 2022-10-20 00:16:15 · 3342 阅读 · 2 评论 -
STM32F103ZET6【标准库函数开发】------05.通用定时器TIM3四个通道输出PWM信号
通用定时器TIM3四个通道输出PWM信号原创 2022-10-19 23:21:10 · 2545 阅读 · 2 评论 -
STM32F103ZET6【标准库函数开发】------09 高级定时器TIM8输出7个PWM,三对为互补PWM
高级定时器TIM8输出7个PWM,三对为互补PWM原创 2022-10-19 22:22:06 · 1521 阅读 · 0 评论 -
STM32F103ZET6【标准库】----- 04串口5的IO口收发数据实验测试
STM32F103最多五个串口可以使用,分别为USART1、USART2、UUSART3、UART4、UART5其中USART1最多有两组IO可以当作串口来使用,PA9/PA10;PB6/PB7USART2最多有两组IO可以当作串口来使用,PA2/PA3;PD5/PD6USART3最多有三组IO可以当作串口来使用,PB10/PB11;PC10/PC11;PD8/PD9UART4和UART5只有一组IO可以当做串口使用PC10/PC11;PC12/PD2本文介绍所有的IO使用情况,便于日后查阅...原创 2022-06-06 22:54:40 · 1227 阅读 · 1 评论 -
STM32F103ZET6【标准库函数开发】----- 04串口4的IO口收发数据实验测试
STM32F103最多五个串口可以使用,分别为USART1、USART2、UUSART3、UART4、UART5其中USART1最多有两组IO可以当作串口来使用,PA9/PA10;PB6/PB7USART2最多有两组IO可以当作串口来使用,PA2/PA3;PD5/PD6USART3最多有三组IO可以当作串口来使用,PB10/PB11;PC10/PC11;PD8/PD9UART4和UART5只有一组IO可以当做串口使用PC10/PC11;PC12/PD2本文介绍所有的IO使用情况,便于日后查阅...原创 2022-06-06 22:43:58 · 1161 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】----- 04串口3的三组IO口收发数据实验测试
STM32F103最多五个串口可以使用,分别为USART1、USART2、UUSART3、UART4、UART5其中USART1最多有两组IO可以当作串口来使用,PA9/PA10;PB6/PB7USART2最多有两组IO可以当作串口来使用,PA2/PA3;PD5/PD6USART3最多有三组IO可以当作串口来使用,PB10/PB11;PC10/PC11;PD8/PD9UART4和UART5只有一组IO可以当做串口使用PC10/PC11;PC12/PD2本文介绍所有的IO使用情况,便于日后查阅...原创 2022-06-06 22:34:02 · 1164 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】----- 04串口2的两组IO口收发数据实验测试
STM32F103最多五个串口可以使用,分别为USART1、USART2、UUSART3、UART4、UART5其中USART1最多有两组IO可以当作串口来使用,PA9/PA10;PB6/PB7USART2最多有两组IO可以当作串口来使用,PA2/PA3;PD5/PD6USART3最多有三组IO可以当作串口来使用,PB10/PB11;PC10/PC11;PD8/PD9UART4和UART5只有一组IO可以当做串口使用PC10/PC11;PC12/PD2本文介绍所有的IO使用情况,便于日后查阅...原创 2022-06-06 21:52:50 · 897 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】---04.1 五个串口的时钟以及重映射应该如何配置
对STM32F103ZET6五个串口关于时钟配置,以及重定义的介绍原创 2022-05-07 22:15:52 · 6631 阅读 · 1 评论 -
STM32F103ZET6【标准库函数开发】------04五个串口的详细配置
1.开机两个LED都是熄灭状态,按照图一配置串口调试助手,发送数据后,可以看到开发板上两个led均点亮2.按下图三圈起来的KEY0,可以看到串口调试助手收到16进制的41原创 2022-05-06 23:27:05 · 9134 阅读 · 3 评论 -
STM32F103ZET6【标准库函数开发】------02.2 按键实现短按、长按、双击的效果(非中断方式)
开机LED0、LED1均熄灭单击KEY0,LED0点亮、LED1熄灭双击KEY0,LED0熄灭、LED1点亮长按,LED0,LED1均熄灭原创 2022-05-03 14:35:41 · 3586 阅读 · 15 评论 -
STM32F103ZET6【标准库函数开发】------02.1 按键的不同展示方法(非中断的形式)
一、按键的形式按键的状态只有按下和按下两种,而刚好电平也只有高电平和低电平两种。所以对应的GPIO口的状态也有两种一种是未按下为高电平,按下为低电平(需要将IO设置为上拉输入) 图1 图2 一种是未按下为低电平,按下为高电平(需要将IO设置为下拉输入) 图1 图2 二、分析代码对应的实际效果 int main(void) { LED_Init(); //LED端口初始化 KEY_Init(); //初始化与按键连原创 2022-04-30 00:04:24 · 932 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】----- 04串口1的两组IO口收发数据实验测试
STM32F103最多五个串口可以使用,分别为USART1、USART2、UUSART3、UART4、UART5其中USART1最多有两组IO可以当作串口来使用,PA9/PA10;PB6/PB7USART2最多有两组IO可以当作串口来使用,PA2/PA3;PD5/PD6USART3最多有三组IO可以当作串口来使用,PB10/PB11;PC10/PC11;PD8/PD9UART4和UART5只有一组IO可以当做串口使用PC10/PC11;PC12/PD2本文介绍所有的IO使用情况,便于日后查阅...原创 2022-04-27 00:09:03 · 2347 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】----库函数介绍
一、GPIO库函数总览GPIO_DeInit //将外设GPIOx 寄存器重设为缺省值GPIO_AFIODeInit //将复用功能(重映射事件控制和EXTI 设置)重设为缺省值GPIO_Init //根据GPIO_InitStruct 中指定的参数初始化外设GPIOx 寄存器GPIO_StructInit //把GPIO_InitStruct 中的每一个参数按缺省值填入GPIO_ReadInputDataBit //读取指定端口管脚的输入GPIO_ReadInputData //原创 2022-04-20 22:53:14 · 783 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------PB3,PB4当做普通IO口,重定义
一、如题,我在设计原理图的时候将PB3和PB4当做了普通IO口,结果按照一般配置的方法操作后,PB3 PB4并没有输出自己想要的信号,配置如下:void MOTOR_GPIO_Init(void)//初始化{ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB,PE端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pi原创 2022-04-01 18:07:04 · 1907 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------正点原子串口中断服务函数简介
一、首先上代码,正点原子的串口中断服务函数如下#define USART_REC_LEN 200 //定义最大接收字节数 200u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.u16 USART_RX_STA=0; //接收状态标记 //接收状态//bit15, 接收完成标志//bit14, 接收到0x0d//bit13~0, 接收到的有效字节数目void USART1_IRQHandler(vo原创 2022-04-01 01:46:43 · 3510 阅读 · 3 评论 -
PS2手柄移植到STM32上面的小笔记
一、硬件准备:战舰开发板、PS2手柄接收器、PS2手柄、连接线二、硬件连接:PS2手柄接收器有六个引脚,和单片机连接IO口连接,如下图:接收器信号单片机IOGNDGNDVCC3.3VDI/DATPB12DO/CMDPB13CSPB14CLKPB15三、PS2通信简介通讯时序如下,感觉和SPI很像,也是四线DI与DO是一对同时传输的8 bit串行数据,传输的时候需要CS为低电平,CLK由高变低。DO是单片机发送给接收器的信号。原创 2021-11-13 01:55:46 · 17659 阅读 · 22 评论 -
STM32F103ZET6【标准库函数开发】------按键扫描和外部中断的优先级对比
1、打开正点原子的库函数源码可以看到关于按键的程序有两个,一个是按键输入实验,一个是外部中断实验。从最后体现的效果来看,这两个似乎是一样的,那么如果按键输入和外部中断冲突了,那么哪个优先级比较高呢,今天就来试试2、首先还是简单介绍,硬件用的是野火的STM32F103ZET6开发板,软件框架用的是正点原子的。首先单独实现按键输入和外部中断来切换控制LED的亮灭状态。首先打开原理图,可以看到按键SW2接到PA0,接了下拉电阻到GND,所以这个IO应该配置为下拉输入。然后三个led分别接到了PB0、PB原创 2022-03-21 17:25:44 · 6206 阅读 · 4 评论 -
STM32F103ZET6【标准库函数开发】------05.通用定时器TIM4四个通道输出PWM信号
通用定时器TIM4四个通道输出PWM信号原创 2022-03-18 17:27:52 · 5127 阅读 · 1 评论 -
STM32F103ZET6【标准库函数开发】-----TM1638模块驱动4位8段共阴极数码管
1.环境介绍硬件:正点原子战舰开发板,TM1638数码管模块、JLINK下载器软件:Keil uVision5 2.TM1638模块简介下图为TM1638模块的电路原理图,用的数码管为8段4位共阴极数码管。虽然TM1638的规格书里面写的逻辑电源电压典型值为5V,见下图。没有写最小值和最大值,但是实际使用的使用,接3.3V也是可以使用的,只不过接5V电源时候亮度更高,同时高电平输入电压最小为0.7VDD,如果按照5V来算的话,0.7VDD=3.5V,但是实际使用过程中,发现哪怕是接5V,S.原创 2021-02-28 22:31:24 · 3544 阅读 · 2 评论 -
STM32F103ZET6【标准库函数开发】------常用的寄存器和库函数
GPIO寄存器结构和库函数: 图1 图2 ADC寄存器结构和库函数: 图1 图2 DMA寄存器结构和库函数: 图1 图2 EXTI寄存器结构和库函数: 图1 图2 NVIC寄存器结构和库函数: 图1 图2 TIM寄存器结构和库函数: 图1 图2 图3 TIM1寄存器结构和库函数: 图1 图2 .原创 2021-01-15 11:52:50 · 812 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------游戏摇杆模块JOYStick
游戏摇杆模块JOYStick图片如下:1、十字摇杆为一个双向的10k电阻器,随着摇杆方向不同,抽头的阻值随着变化。2、本模块使用5v供电,原始状态下x,y方向读出电压为2.5v左右,转动摇杆, 电压值随之变化,范围在0-5V。z轴方向相当于一个按键。思路:用两个ADC通道读取xy电压 一个I/O口来检测是否按下...原创 2021-01-15 11:00:20 · 2546 阅读 · 0 评论 -
STM32驱动0.96寸oled液晶屏
一、硬件准备单片机:STM32F103ZET6液晶屏:0.96寸oled液晶屏原创 2020-12-25 17:10:47 · 1178 阅读 · 1 评论 -
STM32通过库函数对同一组IO口的多个引脚进行读写
规则:一、置GPIOD->BSRR低16位的某位为’1’,则对应的I/O端口置’1’;而置GPIOD->BSRR低16位的某位为’0’,则对应的I/O端口不变。二、置GPIOD->BSRR高16位的某位为’1’,则对应的I/O端口置’0’;而置GPIOD->BSRR高16位的某位为’0’,则对应的I/O端口不变。三、置GPIOD->BRR低16位的某位为’1’,则对应的I/O端口置’0’;而置GPIOD->BRR低16位的某位为’0’,则对应的I/O端口不变。例如原创 2020-12-10 14:13:17 · 6620 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------通过ULN2003驱动步进电机(非PWM方式)02
在之前的驱动步进电机的基础上引入了按键的功能,可以通过按键实现电机的正转、反转和停止。硬件连接如下:单片机:STM32F103ZET6步进电机:28BYJ-48驱动电路:ULN2003芯片的驱动板引脚连接如下:IN1:PC3IN2:PC2IN3:PC0IN4:PC13OUT1:步进电机4OUT2:步进电机3OUT3:步进电机2OUT4:步进电机1步进电机5:VCC电源正极(5V)GND:共地COM:VCC电源正极(5V)5V直流电源:STM32F103ZET6开发板上的5原创 2020-12-10 15:55:31 · 1482 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------通过ULN2003驱动步进电机(非PWM方式)01
如何用STM32单片机通过ULN2003驱动步进电机28BYJ-48单片机:STM32F103ZET6步进电机:28BYJ-48驱动电路:ULN2003芯片的驱动板引脚连接如下:IN1:PC3IN2:PC2IN3:PC0IN4:PC13OUT1:步进电机4OUT2:步进电机3OUT3:步进电机2OUT4:步进电机1步进电机5:VCC电源正极(5V)GND:共地COM:VCC电源正极(5V)5V直流电源:STM32F103ZET6开发板上的5V电压引脚具体连接如下图:代码原创 2020-12-10 09:41:31 · 2425 阅读 · 1 评论 -
STM32F103ZET6【标准库函数开发】------15 SPI实验
1.SPI简介SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线, STM32 也有 SPI 接口。 SPI 接口一般使用 4 条线通信:MISO/SDO: 主设备数据输入,从设原创 2020-12-02 10:45:35 · 789 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------配置定时器参数的几个常用函数
TIM_TimeBaseInitTypeDef 基本初始化TIM_OCInitTypeDef  原创 2020-08-17 09:51:15 · 1445 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------17 DMA实验
123原创 2020-09-15 15:31:32 · 360 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------14 I2C实验
1.IIC 简介IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它由数据线 SDA 和时钟 SCL 构成,可发送和接收数据。在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上。标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。2.信号类型空闲状态:I2C总线总线的SDA和SCL两条信号线原创 2020-12-01 12:00:06 · 2423 阅读 · 1 评论 -
STM32F103ZET6【标准库函数开发】------07 DAC实验
开发板输出任意0-3.3V任意电压值,用串口调试助手显示出来原创 2020-11-12 17:47:51 · 2886 阅读 · 2 评论 -
STM32F103ZET6【标准库函数开发】------06 ADC实验
STM32F103ZET 包含有 3 个 ADC,分别为ADC1,ADC2,ADC3。 ADC时钟使能ADC1,ADC2,ADC3都挂载APB2下面,时钟使能如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE ); //使能ADC1通道时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE ); //使能ADC2通道时钟RCC_APB2PeriphClockCmd(RCC_APB原创 2020-08-17 10:58:14 · 3167 阅读 · 1 评论 -
STM32F103ZET6【标准库函数开发】------04 串口USART1控制LED
USART1挂在APB2下USART2,USART3,USART4,USART5挂在APB1下原创 2020-08-17 10:57:59 · 2257 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------10 通用定时器TIM5的输入捕获功能
11原创 2020-11-12 14:05:16 · 1603 阅读 · 0 评论 -
STM32F103ZET6【标准库函数开发】------09 高级定时器TIM1输出7个PWM,三对为互补PWM
只有高级定时器可以输出互补的PWM,所以只有TIM1和TIM8可以实现这个功能。本次用TIM1的CH1输出一对互补的PWM,对应的GPIO口为PA8和PB13配置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能定时器1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能GPIOA外设 RCC_APB2PeriphClockCmd(RCC_APB.原创 2020-08-17 10:57:48 · 1972 阅读 · 2 评论