-
STM32中的内存STM32中的内存包含两块主要区域:flashmemory(只读)、staticrammemory(SRAM,读写)。其中,flashmemory起始于0x08000000,SRAM起始于0x20000000。flashmemory的第一部分存放异常向量表,表中包含了指向各种异常处理程序的指针。比如说,RESETHandler便位于0x08000004的位置,在...[详细]
-
一、项目概述1.1引言目前,大部分的音乐文件都是以mp3格式来保存的,mp3是一种有损的音频压缩格式,它无法完美地再现原版音乐。随着存储器容量的扩大、网络带宽的增加、处理器性能的增强以及人们对生活品质要求的提高,无损音乐越来越受到人们的青睐,对无损音乐播放器的需求也就越来越大。1.2项目背景/选题动机我们希望能在AVR单片机上实现一个“FLAC高保真音频播放器”。播放器用...[详细]
-
一、通信基础知识1.1通信到底传输的是什么?在逻辑层面,通信传输的是比特也就是二进制数。在物理层面上,当线路为电路时,发送方发送一个个持续小段时间的电压信号来表示这些二进制数,比如双方约定一个0.001秒的0V代表数字0,5V代表数字1,发送方发送先后发送两个持续0.001秒的0V和一个0.001秒的5V,就是相当于发送了001。这种持续一段时间的电压信号就是码元。当线路为无线电波时,码元...[详细]
-
下面就列出了一些STM32中重要的C语言知识点,初学的小伙伴可以多读几遍,其中大多知识点之前都有写过,这里重新整理一下,更详细地分析解释可以阅读附带的链接。assert_param断言(assert)就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时...[详细]
-
Keil5更新之后,开始支持ARMV6编译器,新版本的编译器对C++有了更多的支持,在编译方面也做了很多的改善,具体的没有详细了解,本文只是对STM32开发下,使用V6版本的编译器进行STM32的C++开发作一个记录,方便和大家交流和参考。至于说为什么STM32要C++开发,这个没有解释,只是个人觉得C++比C有更多的方便,使得编程更加的容易,C++有更多的生态.... 开始上教程:...[详细]
-
随着超声波技术的不断发展,超声波广泛应用于检测、清洗、焊接、医疗等领域,甚至在纺织、航空领域也能见到它的踪迹。目前,超声的研究和应用可分为功率超声和检测超声两大领域,超声清洗是功率超声最为广泛的应用之一。它通过换能器,将功率超声的声能转换成机械振动,同时强超声波在液体传播时会产生“空化效应”。在空化气泡突然闭合时发出的冲击波可在其周围产生上千个大气压力,对污层的直接反复冲击,一方面破坏污物与清洗...[详细]
-
引言 随着电子技术的不断发展,医疗设备的不断更新,对医用药液的输注精度要求越来越高,很多药物对输注剂量有着严格的要求,且这部分药物无法通过生理盐水、葡萄糖等进行稀释,从而传统的人工针管输注无法保证剂量的准确性,而这部分药物由于药量较小,也不适合使用输液泵长时间输注。本装置是一款专门针对小剂量短时间输注而设计的产品,可用于直接药液输注、精确配药等,还可用于新药鉴定、药品药效分析等。本装置通过外...[详细]
-
有时IAR工程因异常关闭,再次打开IAR工程时,会出现Workspace栏不显示工程的现象,如下图所示:原因:demo.eww文件内容丢失,丢失后demo.eww文件内容的内容如下:?xmlversion=1.0encoding=UTF-8?workspacebatchBuild//workspace正常的demo.eww文件内容应该如下,即丢失了下述...[详细]
-
HSE:外部高速时钟;LSE:外部低速时钟;MCO:芯片外部输出时钟PLL:锁相环;SYSCLK:系统时钟;1.新建一个文件夹2.打开STM32cubemx新建一个工程如果已经安装了固件库,可以点击取消搜寻芯片型号双击选择的芯片配置时钟IO口配置点亮LED灯在原理图PB10引脚...[详细]
-
串口作为MCU的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。现在基本上所有的MCU都会带有串口,STM32自然也不例外。STM32F4的串口资源相当丰富的,功能也相当强劲。STM32F4开发板所使用STM32F407ZGT6最多可提供6路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDASIREN...[详细]
-
预备知识:对标准库来说,如果定义了时钟频率,则系统会默认初始化该时钟频率。SysTick是CM4的内核外设,是一个24位的向下递减计数器,每次计数时间是1/SYSCLK,即1/168000000。SysTick计数时间的计算:t=重装载值*1/AHB时钟频率。1/AHB时钟频率即是计数一次的时间。一般把重装载值定为128000000/100000=1280,则10us中断...[详细]
-
在STM32L0中操作EEPROM本来参考了上篇操作FLASH的方法,多多少少都有些问题。我觉得可能是结构体在转换成其他变量的时候出了问题。比如下面这段代码,在Windows上可以正常运行(使用g++编译),但是在单片机上就会卡死。typedefstruct{uint8_tIDD;uint8_tzero;uint8_tdutyCorr;}usrfl...[详细]
-
一、下载压缩包(已上传至群文件),在你的Arduino安装路径hardware下新建一个文件夹,起名为expressif,并将压缩包解压到文件夹里(图片中是我的路径,可以参考一下)然后进入文件夹,点击expressifarduino-esp-32-mastertools,找到get.exe并右键以管理员身份运行窗口打开后会自己关闭,然后应该会多出这三个文件夹(如果直接从git...[详细]
-
STM32CubeProgrammer是意法半导体(ST)推出的一款用于STM32系列微控制器(MCU)和微处理器(MPU)的烧写与调试工具,集成了调试、固件烧写、安全配置等多种功能。其2.20版本在兼容性、本地化、功能优化等方面带来了多项重要更新,同时延续了对新设备和安全功能的扩展支持。以下是详细解析:一、STM32CubeProgrammer2.20版本新功能1....[详细]
-
在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不可以直接使用的,必须做点对库函数的改动。STM32MCUBE是ST官方提供的库以及初始化工具,很好很强大,但是在UART方面值提供了如下函数:HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16...[详细]