推荐阅读最新更新时间:2024-03-16 14:28
STM32单片机PS2遥控小车
电路原理图如下: STM32单片机源程序如下: #include led.h #include delay.h #include sys.h #include usart.h #include pstwo.h /********************************************************* 功能:通过PS2控制小车运动 作者:大海电子 时间:180531 硬件平台:STM32F103C8T6 时钟:8Mhz 硬件引脚分配: //手柄接口 DI=PB12; DO=PB13 ; CS=PB14; CLK=PB15; //L298N 电机驱动控制引脚 IN1=PA0;
[单片机]
STM32延时函数分析
Cortex-M3内核处理器有个systick 24位倒计时定时器,当计数到0时,重新装载初值. delay_init(u8 SYSCLK) //定时初始化函数分析 { Systick- CTRL&=0xfffffffb; //bit2清空,选择外部时钟 HCLK/8 fac_us=SYSCLK/8; fac_ms=(u16)fac_us*1000; } 摘自STM32手册 6.2.6 系统时钟(SYSCLK)选择 系统复位后,HSI 振荡器 被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。 只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟
[单片机]
STM32学习之旅② 固件库的使用及工程模板的建立
一、认识其本质 STM32在进入中国市场的时候,商家为了迎合中国市场,翻译了很多英文文献,所以STM32相对与其他单片机的资料是相对丰富的,这也是很多人推崇STM32的原因,这对于我们学习来说也是相当不错的,但是由于翻译版本很多,注意以官方版本为准,在看文档发现不对时应该参考官方文档 固件库其实是官方为了加快开发速度,帮助用户快速上手芯片,进行二次开发而研究出来的,它的出现大大缩短了芯片开发周期 二、为什么要使用固件库 (一)基于寄存器的编程(传统编程方式) 好处:开发者可以了解单片机较为底层的寄存器,了解程序在硬件上的具体实现方式,便于纠错。 不足: 移植性差:由于单片机通常由很多外设,而不同型号的的单片机的寄存器操作方
[单片机]
STM32实现HID和u盘复合设备
USB设备可以定义一个复合设备,复合设备分两种,一种是一个设备多个配置,还有一种是一个配置多个接口,在本例中采用一个配置多个接口的方式 首先修改设备描述符,标准设备描述符和报告描述符都不需要修改,只需要修改配置描述符即可 //usb配置描述符 const u8 DinkUsbConfigDescriptor = { /***************配置描述符***********************/ USB_CONFIGUARTION_DESC_SIZE, //bLength字段。配置描述符的长度为9字节。 USB_CONFIGURATION_DESCRIPTOR_TYPE, //bDescriptor
[单片机]
STM32 BOOT0与BOOT1 的应用原理
很多网友在用 keil 下载 程序时,明明下载线连接正常,偏偏程序就是无法下载,还提示芯片未连接。此时可能出错的原因就在BOOT0上。 首先对BOOT0与BOOT1如何连接及连接方式介绍一下。 STM32 单片机的BOOT0 和BOOT1 应用原理 STM32 三种启动模式对应的存储介质均是芯片内置的,它们是: 1)主闪存存储器= 芯片内置的Flash。这也是正常工作模式 2)SRAM = 芯片内置的RAM 区,就是内存啦。 3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说 的ISP 程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。 在每个STM3
[单片机]
STM32五大新品齐亮相,砸重金积极扩产能!
漫长疫情之后,ST今年在北京的首场发布会,重磅推出了多款产品,覆盖了STM32产品家族的全线产品。 “这些产品发布代表着ST将进入一个新时代——云连接、智能边缘的时代,”ST微控制器和数字IC产品部MDG亚太区、物联网/人工智能创新中心及数字营销副总裁朱利安表示,在新的时代,更多的人工智能算法或智能化将运行在设备端,由于联网设备的增加,边缘侧安全识别、验证、数据保护也将越发关键。为此,ST在微控制器和数字产品的远景规划中,也将智能、安全、互联作为重点关注对象。 之所以做这样的战略布局,ST也是在第一线感受到了市场的变化。朱利安介绍,在32位通用MCU潜在市场中,工业市场份额将从2021年的的52%增长到2026年的65%,
[单片机]
STM32开发笔记81: 在逻辑层建立任务的方法
单片机型号:STM32L053R8T6 项目中应用FreeRTOS操作系统后,可以将任务单独封类,以使程序结构上更容易理解,操作更为方便简单。本文介绍在项目的逻辑层,将任务单独封类的步骤。 1、在Keil中建立2个空白文档,然后进行保存,将其保存到项目中逻辑层所对应的相应文件夹中,如下图所示,两个文件分别以.h和.cpp作为后缀。 2、将上述建立的2个文件加入到逻辑层中,如下图所示。 3、将下述样例程序加入到相应的.h文件中。 #ifndef EMBED_TASK_H_ #define EMBED_TASK_H_ #ifdef __cplusplus extern C { class CEmbedTas
[单片机]
如何有效地使用串口通讯接收数据
引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序还要不要运行了? 同学B:串口可以配置成用DMA的方式接收数据,等接收完毕就可以去读取了! 这个同学是对的,我们可以使用DMA去接收数据,不过DMA需要定长才能产生接收中断,如何接收不定长的数据呢? DMA简介 题外话:其实,上面的问题是很有必要思考一下的,不断思考,才能进步。 什么是DMA DMA :全称Direct Memory Access,即直接存储器访问
[单片机]