STM32
文章平均质量分 63
Successful 、
自从厌倦于追寻,我已学会一觅即中。自从一股逆风袭来,我已能抗御八面来风,驾舟而行。
展开
-
STM32 自定义频率与占空比PWM输出
一、本实例所使用资源:1、 PWM输出:TIM3_CH1(对应管脚PA6)2、 PWM输出:TIM3_CH2(对应管脚PA7)3、 MDK 软件仿真二、步骤1、 初始化对应GPIO2、 配置定时器TIM33、 main函数调用初始化三、代码static void Timer_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, E原创 2021-04-05 23:44:31 · 985 阅读 · 0 评论 -
【学习】uC/OS-III 任务的定义与任务切换的实现
在裸机系统中,除全局变量以外,他们统统放在一个叫栈的地方,栈是单片机 RAM 里面一段连续的内存空间,栈的大小由启动文件里面的代码配置。而且裸机系统中需要使用栈的时候可以天马行空,随便在栈里面找个空闲的空间使用。但是,在多任务系统中,每个任务都是独立的,互不干扰的,所以要为每个任务都分配独立的栈空间,这些一个个的任务栈也是存在于 RAM 中。多任务系统中任务的堆栈就是在统一的一个栈空间里面分配好一个个独立的房间,每个任务只能使用各自的房间。一、如何创建任务主要流程: 1、定义任务堆栈 2、定义任务函原创 2021-03-31 19:35:44 · 576 阅读 · 1 评论 -
【学习】蓝桥杯嵌入式:第八届预赛试题—模拟升降控制器
前言关于第八届预赛试题。由于手边没有示波器,所以PWM 部分,我虽然写了,但是没有调试,所以在整体系统中,PWM_Set部分被注释 应该能用 问题不大(但是不完善)。此篇文章只是为了做笔记和交流学习,仍有很大改善空间,大家如果有问题或者见解可以评论区留言。一、题目重述功能描述二、系统设计分析整体思想,分级实现,先实现小功能,然后再逐步完善。1、按键框架:void KEY_Cmd_Judge(void){ key_cmd_flag = KEY_Read(); if(key_cmd原创 2021-03-27 20:16:36 · 2119 阅读 · 9 评论 -
【学习】蓝桥杯嵌入式:第七届预赛试题—液位检测告警系统
前言个人认为,比赛前做大量的练习,是非常必要的。然后如果想在嵌入式比赛中拿到好的成绩,关注我也很有必要,哈哈哈哈。下面上干货。一、题目重述功能描述二、系统设计分析思路:题目所给任务,进行逐级分析,分块实现。(下手角度因人而异)首先,我考虑的是先实现功能三,先实现按键控制功能切换。在按键切换功能完成的基础上,分别按照题目要求,进完善每个功能。我选择的是先从简单的入手。程序框架如下:void KEY_Cmd_Judge(void){ key_cmd_flag = KEY_Read(原创 2021-03-14 10:52:57 · 2834 阅读 · 13 评论 -
【蓝桥杯嵌入式】解决 LCD与LED冲突的方法
1、找到lcd.h文件,并且在下面找到下面三个函数:void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);void LCD_WriteRAM_Prepare(void);void LCD_WriteRAM(u16 RGB_Code);三个函数在首加上u16 pcout = GPIOC->ODR,尾加上GPIOC->ODR = pcout,在改变GPIOC->ODR寄存器的值前将其保留,直到lcd完成写操作再把值还给GPIOC->O原创 2021-03-10 20:07:26 · 3330 阅读 · 7 评论 -
【蓝桥杯嵌入式拓展板】—I2C读写EEPROM详解
关于蓝桥杯嵌入式板子的I2C,如果你以前没有接触过I2C通信。重点:懂得通过电路图判断出I2C设备的地址会看I2C读写时序图。底层驱动,考试会给你当然,如果你真的是0基础,还有救!《【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC》这里是我以前写的,硬件实现I2C的一个文章,文章末尾有软件实现I2C的方法,硬件都会了,软件就很简单了传送门:https://blog.csdn.net/qq_45689790/article/detai原创 2021-02-27 17:47:44 · 3746 阅读 · 10 评论 -
【蓝桥杯嵌入式拓展板】—双通道ADC采集 详解(附程序源码)
一、准备工作[PA4->AO1]、[PA5->AO2] 转动RP5、RP6可观察到测得AD值变化二、原理图关于ADC采集详解,参考“STM32-ADC配置详解及应用。实例:《中断单通道读取ADC》、《DMA多通道读取ADC》”链接:https://blog.csdn.net/qq_45689790/article/details/113862143三、程序1、static void ADCx_GPIO_Config(void)static void ADCx_GPIO_原创 2021-02-26 21:22:31 · 2640 阅读 · 2 评论 -
【蓝桥杯嵌入式拓展板】—PWM输入捕获 详解(官网程序优化)(附程序源码)
首先,有一点要说,这个程序经过测试,比官网例程更稳定。而且数据误差很小。官网程序在高占空比的时候会存在数据严重抖动的现象。STM32-ADC配置详解及应用。实例:《中断单通道读取ADC》、《DMA多通道读取ADC》关于ADC的讲解,这篇文章所讲内容,不仅可以满足蓝桥杯的需求,而且还进行了拓展链接: https://blog.csdn.net/qq_45689790/article/details/113862143优化代码1、static void General_Timer_GPIO_C原创 2021-02-26 20:00:15 · 1149 阅读 · 2 评论 -
【蓝桥杯嵌入式拓展板】—温湿度传感器 DHT11 详解(附程序源码)
一、温湿度传感器 ————————————一般应用的时候,默认将Pin1接VDD Pin4接GND, Pin2作为通信引脚二、通信过程:串行通信通过一个端口接受来自MCU的命令或者发送给MCU数据。在发送数据的时候,一个完整的数据包含40bit,并且传感器首先发送高数据位(the sensor sends higher data bit first)。数据格式三、通信时序图...原创 2021-02-26 16:33:34 · 4555 阅读 · 3 评论 -
【蓝桥杯嵌入式扩展板】ADC按键详解(附程序源码)
前期需要掌握知识:ADC采集一些简单的电路知识一、实验须知实验前连接 [A5->AKEY]这里我还用到了数码管,因此连接了**[A1->SER]、[A2->RCK]、[A3->SCK]**数码管,不再讲解,参考以前的文章https://blog.csdn.net/qq_45689790/article/details/114106264二、硬件原理图三、程序1、ADC相关static void ADCx_GPIO_Config(void){ GP原创 2021-02-26 10:40:05 · 2637 阅读 · 5 评论 -
【蓝桥杯嵌入式扩展板】数码管详解(附程序源码)
蓝桥杯嵌入式——数码管详解由电路图,控制数码管显示的关键,就是掌握这个“SN74LS595N” 移位数据锁存器的工作原理。一、芯片内部结构假设你数电知识还可,能看出芯片内部结构是一个移位寄存器:SRCLR/ 复位端口,低电平有效。一般默认接VCC。数据从SER进入,在SRCK的时钟触发下,上升沿数据移位,下降沿数据保持。当数据移动8次之后,即SRCK发生8次高低电平的翻转。8bit的数据已经完全输入到 移位数据寄存器。之后给RCK 一个上升沿,595移位数据寄存器的数据全部输入到数据寄存器进原创 2021-02-25 21:41:42 · 1678 阅读 · 4 评论 -
KEIL仿真如何调用内部逻辑分析仪,PWM输出波形
在我们进行开发工作的时候,总会需要查看某些特定引脚的输出。这个时候示波器就显得尤为重要。但是一个便宜的示波器也好几百块。这个问题但是也困扰了我很久,最近,我发现KEIL其实自带逻辑分析仪,可以查看波形。1、首先配置调试工具点击魔术棒勾选对应方框其中勾选“Limit Speed to Real-Time" 在软件仿真的时候,不至于出现“鼠标点一点,机器跑千年”的时光加速滑稽剧,不打勾会走得偏快!除非你的机器配置太低。建议勾选2、配置好后,开始进入调试,调用逻辑分析仪。这里我要观察的是 PA原创 2021-02-25 14:12:44 · 7873 阅读 · 3 评论 -
STM32:硬件IIC,实现EEPROM跨页写入数据,(接上文)
上文:STM32:硬件IIC,实现EEPROM页写入和连续内存数据读取,但是出现数据出错(上)https://blog.csdn.net/qq_45689790/article/details/113729858#comments_15148487按照手册内容实现连续数据的写入(但是不能跨页)和单个数据的写入后。下面介绍硬件IIC跨页写入任意长度的数据。基本思想:若一页有8个数据确定要写入的地址WriteAddr ,OnePage = 8 - WriteAddr%8 得到的就是第一页需要写入的原创 2021-02-25 12:17:18 · 4917 阅读 · 5 评论 -
STM32—TIM(基本定时器)详解
一、定时器简介STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。高级定时器 TIM1/8是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有原创 2021-02-24 15:52:54 · 22108 阅读 · 1 评论 -
STM32-ADC配置详解及应用。实例:《中断单通道读取ADC》、《DMA多通道读取ADC》
一、ADC介绍12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。二、框图分析按照顺序分析:1、电压输入范围:ADC 输入范围为:VREF- ≤ VIN ≤ VREF+。由 VREF-、VREF+ 、VDDA、 VSSA、这四个外部引脚决定。一般把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,得到ADC 的输入原创 2021-02-19 16:37:44 · 8177 阅读 · 3 评论 -
【嵌入式】STM32-外部中断/事件控制器(EXTI)详解.《实例:外部中断实现LED亮灭翻转》
一、EXTI简介EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。二、EXTI功能框图1、EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件。2、EXTI 控制器有 19 个中断/事件输入线这些输入线可以通过寄存原创 2021-02-18 16:33:02 · 7135 阅读 · 5 评论 -
【STM32-Sysyick】 详解及应用,深入寄存器附加代码
一、SysTick 简介SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用原创 2021-02-18 10:07:48 · 2171 阅读 · 4 评论 -
STM32 :配置IO模式详解(秒懂ADC,USART,DMA,等所有外设IO口配置说明)
在学习嵌入式的过程中,几乎所有的外设功能配置都需要先对 IO 口进行配置,但是面对如此多的外设,具体配置成那种模式,很多人都一直都是死记硬背(关键还记不住)今天我就带大家了解一下,IO口的配置模式。(以STM32F1为例,其他同理)首先,授人以鱼不如授人以渔,网上的说明再详细,哪能有官方手册上的说明详细?花费大量篇幅讲解各个模式,还不如教大家,怎么查。首先,以下信息都来源于这个位置:没错,这就是手册的目录,很多人不习惯看手册,但是答案都在这里面。一、STM32中IO口可以配置成的模式有哪些?t原创 2021-02-09 15:04:58 · 12034 阅读 · 7 评论 -
STM32:硬件IIC,实现EEPROM页写入和连续内存数据读取,但是出现数据出错(上)
对于实现EEPROM页写入和连续内存数据读取,可以根据“AT24C01”数据手册,进行代码实现。:具体分析过程可以看我的另一个文章“【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC”手册中给出了 数据写入和读取的图示,我直接上代码了,最后分析出错原因。并给出解决措施如下图:1、单个字节写入void I2C_ByteWrite(uint8_t *pBuffer, uint8_t WriteAddr){ while(I2C_GetFlagStatu原创 2021-02-06 20:50:21 · 7395 阅读 · 5 评论 -
【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC
一 、I2C物理层I2C 通讯设备之间的常用连接方式见图:有以下特点:(参考数据手册:上拉电阻一般4.7k~10k ,一般4.7k)(1)由两条总线控制:一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收发同步。(2)I2C总线上可挂在多个 I2C通讯的设备,如图所示。(3)每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。(4)总线通过上拉电阻接到电源。当 I2C 设备空闲时,会输出高阻态,而当所有设备原创 2021-02-06 16:16:24 · 24287 阅读 · 25 评论