-
本篇文章带着大家来认识一下STM32的时钟系统,以及利用systick定时器来实现一个比较准确的延时。 我们首先从时钟说起,时钟在MCU中的作用,就好比于人类的心脏一样不可或缺。STM32的时钟相比51的单一时钟要复杂些,它有多个时钟源可以使用,那么大家可能会有所疑惑,STM32的时钟搞的那么复杂干什么,原因其实在于,STM32的外设资源比起51来说,是很丰富的,那么不同...[详细]
-
众所周知STM32有5个时钟源HSI、HSE、LSI、LSE、PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的。 其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。 内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上...[详细]
-
相较于51单片机,stm32的时钟系统可以说是非常复杂了,我们现在看下面的一张图:上图说明了时钟的走向,是从左至右的从时钟源一步步的分配给外设时钟。需要注意的是,上图左侧一共有四个时钟源,从上到下依次是:高速内部时钟(HSI):以内部RC振荡器产生,频率为8Mhz,但相较于外部时钟不稳定。高速内部时钟(HSE):以外部晶振作为时钟源,晶振频率可取范围为4~16Mhz,一般采用8Mhz的...[详细]
-
我们在学习一门技术的时候,应该对它的理论部分有所了解,然后才能在实践中进一步加深理解,进而掌握。对于stm32来说,我认为学习的时候应该先仔细阅读相关的参考手册,然后再动手实践,这样才能理解得更加透彻,掌握得更加牢固!今天记录一下我学习stm32的ADC部分的了解。1.介绍小结:stm32的ADC有18个通道(16个外部通道+2个内部通道),有单次、连续、扫描和间断四种模式,ADC...[详细]
-
STM32---SPI通信的总结(库函数操作)参考代码:1voidSPI_GPIO_Init(void)2{3GPIO_InitTypeDefGPIO_InitStructure;4SPI_InitTypeDefSPI_InitStructure;56NVIC_InitTypeDefNVIC...[详细]
-
引言 随着社会的发展,人们对冷藏、冷冻食品质量要求不断提高,而食品外观及营养成分的变化与冷库的温度密切相关,不同的食品有不同的冷藏或冷冻温度,不同的保存时间有不同的保存温度,因此设计开发一个符合实际需要的冷库温度实时巡回检测系统,检测冷库不同位置的温度,以辅助管理人员及时对冷库温度进行调节,显得十分必要。 在传统的冷库温度检测系统中,经常应用热敏电阻之类的温度传感器件,利用它的感温...[详细]
-
在项目中新建一个文件夹,并在文件夹中新建了.h文件。编译出现了如下错误。原因是,没有将新建文件夹包含到编译路径中。项目右键--properties----C/C++General------PathsandSymbols--------Includes----------Add------------WorkSpaces--------------选择自己在项目...[详细]
-
引言近年来,随着高层建筑数量的与日俱增,电梯的需求量也在增加。现阶段我们广泛使用的电梯都是基于LED点阵列的显示系统,显示状态信息比较简单,显示方式比较单调。此外,现在的一些电梯里的广告机,虽然改善了电梯轿内的乘坐环境,良好的广告效果也给商家带来了不小的经济效益。但是这种显示装置没有和电梯控制系统融为一体,只是单纯的视频播放而已。为了使显示和电梯控制系统相融合,打造舒适的乘坐环境,针对现...[详细]
-
最近因为工作需要用到FreeRTOS,其实开始本人内心是拒绝的因为自己只学习过UCOSIII还没实际上过什么大又复杂的工程,但是谁让FreeRTOS他是Free的呢公司成本考虑肯定是不会选择USOS的,这个道理就像公司内心深处不想给你涨工资一样。好了跑偏了言归正传,既然要用自然是要熟悉一下这个实时操作的内核的工作过程了,说道到里想起来自己当初学USOC时是把代码几乎进行了逐行的走读,最后因为各种...[详细]
-
在STM32L0中操作EEPROM本来参考了上篇操作FLASH的方法,多多少少都有些问题。我觉得可能是结构体在转换成其他变量的时候出了问题。比如下面这段代码,在Windows上可以正常运行(使用g++编译),但是在单片机上就会卡死。typedefstruct{uint8_tIDD;uint8_tzero;uint8_tdutyCorr;}usrfl...[详细]
-
一、下载压缩包(已上传至群文件),在你的Arduino安装路径hardware下新建一个文件夹,起名为expressif,并将压缩包解压到文件夹里(图片中是我的路径,可以参考一下)然后进入文件夹,点击expressifarduino-esp-32-mastertools,找到get.exe并右键以管理员身份运行窗口打开后会自己关闭,然后应该会多出这三个文件夹(如果直接从git...[详细]
-
看了这个代码之后终于明白了规则多通道转换是怎么回事,以及整体如何实现了。附代码:/********************************************************************************FunctionName:main*Description:Mainprogram*Input:None*Output:...[详细]
-
在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不可以直接使用的,必须做点对库函数的改动。STM32MCUBE是ST官方提供的库以及初始化工具,很好很强大,但是在UART方面值提供了如下函数:HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16...[详细]
-
一.双Bank机制STM32G系列的Flash支持Singlebankmode和Dualbankmode,Singlebankmode即常规的Flash模式,Dualbankmode会将Flash分为两块,正常情况下系统复位时会从Bank1启动,0x08000000对应为Bootloader复位向量,首先运行的代码为Bootloader。Bootloader跳转APP时...[详细]
-
测试效果bsp_usart_dma.c文件代码#include"bsp_usart_dma.h"u8RxBuffer={0x00};//串口1接收后存放到此数组u8TxBuffer={0x00};//串口1发送此数组的数据u16RxBufferSize=0;voidusart_dma_init(void){GPIO_InitTy...[详细]