STM32/STM8 学习笔记
文章平均质量分 87
STM32/STM8 学习笔记
Mount256
这个作者很懒,什么都没留下…
展开
-
STM8驱动RTC芯片DS1302
使用软件:IAR FOR STM8编程方式:固件库硬件配套:STM8S105C6T6实验板文章目录1. DS1302.h2. DS1302.c3. main.c1. DS1302.h引脚定义函数封装时间数据结构体定义数据缓冲区定义#ifndef __DS1302_H#define __DS1302_H/****************************驱动 RTC 芯片 DS1302******************************//* Includes -原创 2022-02-27 14:42:51 · 528 阅读 · 0 评论 -
STM8驱动HC-05蓝牙模块
使用软件:IAR FOR STM8编程方式:固件库硬件配套:STM8S105C6T6实验板文章目录1 配置蓝牙2 驱动代码2.1 uart.h2.2 uart.c2.3 stm8s_it.c3 简单应用:通过蓝牙控制 LED1 配置蓝牙使用 USB-TTL 模块与 HC-05 蓝牙模块连接(左为 USB 转 TTL,右为蓝牙模块):3V3–>VCCTXD–>RXDRXD–>TXDGND–>GND按下蓝牙模块的黑色小按钮的同时,连上电脑,这时蓝牙模块上的信号灯闪原创 2022-02-24 20:28:09 · 1553 阅读 · 1 评论 -
STM8驱动0.96寸OLED(12864液晶屏)
由于中景园电子给出的例程不够全面,因此特地花时间重新整理了一下代码,并加上了其他的功能。本文记录了使用模拟四线 SPI 协议驱动 OLED 的代码。文章目录1 oled.h2 oled.c2.1 与初始化相关的函数2.2 唤醒和休眠2.3 与显示相关的函数2.4 显示 ASCII 字符串2.5 显示中文字符串2.6 显示图片2.7 垂直及水平滚动3 字模和图片的相关文件3.1 oled_font.h3.2 oled_font.c3.3 oled_font_ch.c3.4 oled_bmp.c使用软件:I原创 2022-02-19 21:06:02 · 2789 阅读 · 2 评论 -
基于STM8的数字温度计设计
基于STM8的数字温度计设计这是在2021年12月初完成的一次课程设计,全程自己设计组装完成,现作为记录存档发布,大家也可以借鉴本文来完成自己的课程设计。(建议使用电脑阅读)课程设计目录基于STM8的数字温度计设计1 课程设计和方案设计1.1 课程设计的目的与意义1.2 本次课程设计的学习目标1.3 设计任务与要求1.4 基本思路与设计框图2 LCD1602及其驱动程序2.1 引脚2.2 时序2.3 指令2.4 驱动程序的实现3 DS18B20及其驱动程序3.1 引脚3.2 时序3.2.1 初始化时序3原创 2021-12-27 10:36:59 · 5936 阅读 · 2 评论 -
STM8串口通信UART驱动
文章目录1. uart.h2. uart.c使用软件:IAR FOR STM8编程方式:固件库硬件配套:STM8S105K4T6最小系统板注意事项:需在IAR工程配置中:在 General Options->Library Configuration->Library 选择 Full;在 General Options->Library Options->Printf formatter 选择 Large,Math functions 选择 Default;另外不能串口打印小原创 2021-12-24 09:54:51 · 3139 阅读 · 0 评论 -
STM8驱动温度传感器DS18B20
文章目录1. DS18B20.h2. DS18B20.c3. delay.h4. delay.c5. main.c使用软件:IAR FOR STM8编程方式:固件库硬件配套:STM8S105K4T6最小系统板这是我在做课设时摸索出来的代码,现记录如下:1. DS18B20.h#ifndef __DS18B20_H#define __DS18B20_H/***********DS18B20驱动***********//*****要用RESET判断*****/#include "stm8原创 2021-12-20 13:39:56 · 893 阅读 · 2 评论 -
STM8四线驱动LCD1602
文章目录1. LCD1602.h2. LCD1602.c3. delay.h4. delay.c5. main.c使用软件:IAR FOR STM8编程方式:固件库硬件配套:STM8S105K4T6最小系统板这是我在做课设时摸索出来的代码,现记录如下:1. LCD1602.h#ifndef __LCD1602_H#define __LCD1602_H/***********LCD1602 四线驱动***********/#include "stm8s.h"#include "dela原创 2021-12-15 15:12:57 · 3375 阅读 · 0 评论 -
STM32学习笔记(16)——(SPI续)读写串行Flash
STM32学习笔记(16)——(SPI续)读写串行Flash一、Flash的基本知识1. Flash概要2. Flash的存储方式与读写特性二、Flash芯片介绍:W25Q641. 引脚说明2. 状态寄存器(STATUS REGISTER)BUSY位3. 命令(INSTRUCTIONS)三、使用 STM32 读写 Flash1. 初始化 SPI 结构体2. 主机发送一字节数据3. 读取 Flash ID 号(JEDEC ID, 0x9F)4. 写使能(Write Enable, 0x06)和读取状态寄存器(原创 2021-08-16 10:35:34 · 2308 阅读 · 2 评论 -
STM32学习笔记(15)——SPI协议
STM32学习笔记(15)——SPI协议一、SPI协议简介1. 物理层2. 协议层(1) 通讯的开始与停止(2)时钟极性CPOL、时钟相位CPHA二、STM32的SPI外设1. 通讯引脚2. 时钟控制逻辑3. 数据控制逻辑4. 整体控制逻辑5. STM32的SPI通讯过程(1)从主机发送数据到从机的详细过程(以 CPHA=1、CPOL=1 为例)(2)从从机接收数据到主机的详细过程(以 CPHA=1、CPOL=1 为例)三、SPI的初始化结构体和库函数1. SPI的初始化结构体2. SPI的常用库函数一、原创 2021-07-12 15:52:00 · 4570 阅读 · 7 评论 -
STM32学习笔记(14)——ADC初步应用
STM32学习笔记(14)——ADC初步应用一、ADC 中断实验1. adc.h2. adc.c3. stm32f10x_it.c4. main.c二、ADC_DMA 实验1. ADC_DMA 单通道实验(1)adc.h(2)adc.c2. ADC_DMA 多通道实验(1)ADC 通道数、规则通道的配置修改(2)DMA 部分修改三、双 ADC 规则同步实验1. adc.h2. adc.c3. main.c一、ADC 中断实验【实现功能】使用 ADC 的一个通道进行测量,并通过中断读取测量结果。【基本思原创 2021-07-11 22:54:36 · 1609 阅读 · 3 评论 -
STM32学习笔记(13)——模数转换ADC
这个月一直忙于准备考试,已经考完一半科目了,偷闲写了这篇文章。因为还没考完试,估计还得咕一段时间了。STM32学习笔记(13)——模数转换ADC第一部分:ADC功能框图一、输入电压二、输入通道三、规则通道四、注入通道五、触发源1. 软件触发2. 外部事件触发六、转换时间六、数据寄存器1. 数据规则寄存器(ADC_DR)2. 数据注入寄存器(ADC_JDRx,x=1, 2, 3, 4)七、中断第二部分:ADC结构体和库函数一、ADC初始化结构体1. 工作模式2. 扫描模式3. 连续转换模式4. 外部触发源选原创 2021-06-26 22:42:56 · 837 阅读 · 4 评论 -
STM32学习笔记(12)——定时器初步应用(2)
前续:STM32学习笔记(11)——定时器初步应用(1)三、高级定时器——PWM互补输出【实现功能】通过使用高级定时器 TIM1 的输出通道 CH1,输出一对互补信号 PWM。要求占空比为 50%。【基本思路】查看原理图,在 STM32F103ZE 中,高级定时器 TIM1 的输出通道 1 对应的引脚是 PA8,互补输出通道 1 对应的引脚是 PB13,刹车通道对应的引脚是 PB12。只需初始化这三个引脚即可。还是跟以前一样,我们设置分频因子为 72,则得到了一次计数周期为 1us,再设置重装载值原创 2021-06-01 12:54:24 · 2021 阅读 · 13 评论 -
STM32学习笔记(11)——定时器初步应用(1)
前排提示一下:这些代码都是本人跟着野火的教程视频写的(与野火的例程会有出入),编程思路则由本人编写。之前我们已经详细过了一遍高级定时器的功能框图,现在来简要说一下其他定时器。STM32 有三种定时器,定时器分类如下:其中,高级定时器(定时、输出比较、输入捕获、互补输出) 的功能最齐全,其次是通用定时器(定时、输出比较、输入捕获),最后是基本定时器 (定时、输出比较、输入捕获,只能向上计数)。一、基本定时器——LED循环亮灭【实现功能】通过基本定时器(TIM6、TIM7),使 LED 每隔 1000原创 2021-05-19 23:10:00 · 1769 阅读 · 9 评论 -
STM32学习笔记(10)——高级定时器TIM
待复制粘贴。。。原创 2021-05-05 15:13:09 · 3111 阅读 · 6 评论 -
STM32学习笔记(9)——(I2C续)读写EEPROM
STM32学习笔记(9)——(I2C续)读写EEPROM一、概述1. 背景介绍2. EEPROM简介二、AT24C02——常用的EEPROM1. 电路原理图2. 写操作(1)按字节写操作(Byte Write)(2)按页写操作(Page Write)3. 读操作(1)随机读操作(2)顺序读操作三、实战:读写EEPROM(单字节操作)1. 单字节写入2. 单字节读取3. 需要注意的问题四、实战:读写EEPROM(多字节操作)1. 页写入2. 连续读取一、概述1. 背景介绍在微机发展的早期,出现了BIOS原创 2021-04-21 22:36:12 · 9844 阅读 · 1 评论 -
STM32学习笔记(8)——I2C总线设备
一、I2C协议简介I2C通讯协议 (Inter-Integrated Circuit,读作I平方C、I方C) 是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路间的通讯。1. 物理层(感谢野火的PPT,一部分内容参考了野火)如下图所示即为I2C的物理层:下面来简要介绍物理层需要了解的知识点:总线: 多个设备共用的信号线,有两条:一条双向串行数据线 (SDA),一条串行时钟线 (SCL)。原创 2021-04-19 23:20:30 · 2886 阅读 · 4 评论 -
STM32学习笔记(7)——DMA直接存储器访问
STM32学习笔记(7)——DMA直接存储器访问一、DMA简介二、DMA功能框图1. DMA请求2. 通道3. 仲裁器二、DMA的结构体定义和库函数定义1. DMA初始化结构体2. DMA库函数3. DMA配置流程三、DMA应用简单实例1. 存储器到存储器(M2M)2. 存储器到USART串口(M2P)一、DMA简介可参考STM32中文参考手册第10章DMA控制器。直接存储器存取(Direct Memory Access,DMA) 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须C原创 2021-04-14 20:53:38 · 1334 阅读 · 2 评论 -
STM32学习笔记(6)——USART串口通信
零、基础知识本节主要写一下通信的一些基础知识,简单过一遍,防忘。1. 通信基本知识(1)数据传送方式分类:串行和并行。(2)数据通信方向分类:全双工、半双工和单工。(3)数据同步方式分类:同步和异步。(4)通信速率比特率(Bitrate):每秒钟传输的二进制位数,单位为比特每秒(bit/s)。波特率(Baudrate):表示每秒钟传输的码元个数,单位为波特(B),没有每秒!码元:举个例子,当我们用一个二进制数(0或1)表示信息时,0或1为一个码元,它只有一个位数;当用两个二原创 2021-04-09 23:33:25 · 1919 阅读 · 3 评论 -
STM32学习笔记(5)——系统定时器SysTick
单独拿出来讲的一个内核外设(所以不要期望在STM32中文参考手册找到它!即使找到也只会叫你看cm3内核编程手册),说明它真的很重要。STM32学习笔记(5)——系统定时器SysTick一、系统定时器Systick1. SysTick简介2. SysTick相关寄存器(1)SysTick control and status register (STK_CTRL)(2)SysTick reload value register (STK_LOAD)(3)SysTick current value regis原创 2021-04-08 18:59:23 · 1279 阅读 · 1 评论 -
STM32学习笔记(4)——NVIC中断优先级管理和外部中断EXTI
STM32学习笔记(4)——NVIC中断优先级管理和外部中断EXTI一、NVIC中断优先级管理1. 中断简介2. 中断向量表3. 嵌套向量中断控制器(NVIC)4. NVIC的定义以及库函数一、NVIC中断优先级管理1. 中断简介在Cortex-M3(CM3)内核中,每个中断的优先级都是用寄存器中的8位来设置的,这样就有2^8 =256级中断,意味着可以支持256个中断,这其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但许多芯片厂商并没有使用CM3内核的全部东西,而是只原创 2021-04-06 22:27:34 · 1876 阅读 · 0 评论 -
STM32学习笔记(3)——时钟系统
STM32学习笔记(3)——时钟系统一、STM32时钟系统1. STM32时钟系统框图(1)最左边(2) STM32的5个时钟源(蓝色框图)(3)几个重要的时钟(黑色字体)(4)预分频器(绿色框图)(5)选择器(灰色框图)(6)时钟安全系统CSS(橙色框图)2.其中一条线路举例(可对照时钟树进行查看)3. 与RCC相关的寄存器定义以及函数二、系统初始化时的时钟配置1. 时钟系统初始化函数SystemInit()2. 系统时钟配置函数SetSysClockTo72()3.小结三、使用库函数配置系统时钟HSE原创 2021-04-04 20:34:41 · 1332 阅读 · 0 评论 -
STM32学习笔记(2)——按键输入实验
前情提示: 我们之前简要做了LED和蜂鸣器的学习笔记:点击这里!因此,本文程序涉及到LED和蜂鸣器的程序段不再重复出现。零、按键基本认识1、防抖按键机械触点断开、闭合的时候,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,而是会产生一些波纹信号,这些波纹信号会干扰高低电平的判断。如下图所示,在按键按下的前后均有信号抖动:为了解决这个问题,有一些电路自带消抖功能,利用电容充放电的延时,消除了干扰波纹,从而简化了软件的处理,软件只需检测引脚的高低电平即可。这叫硬件消抖。然而,我们的实验板却原创 2021-01-20 11:26:20 · 1639 阅读 · 0 评论 -
STM32学习笔记(1)——LED和蜂鸣器
阅读前提示: 我们使用的板子是正点原子的ALIENTEK精英STM32F103。本文使用固件库进行编程,因为使用固件库编程较为方便,且阅读程序也较易理解。STM32学习笔记(1)——LED和蜂鸣器零、GPIO简介及其库函数1. GPIO简介2. 与GPIO有关的几个常用库函数一、LED跑马灯的实现二、蜂鸣器循环响灭三、蜂鸣器和LED灯循环零、GPIO简介及其库函数1. GPIO简介7组IO口(具体地址可见头文件stm32f10x.h): GPIOA ~ GPIOG。每组IO口可控制7个寄存器,这7个原创 2021-01-19 22:03:18 · 3218 阅读 · 0 评论