【STM32】HAL库Flash读写操作及配置文章目录Flash读写附录:Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时位带操作位带代码位带宏定义总线函数一、位带操作理论及实践二、如何判断MCU的外设是否支持位带Flash读写在keil里面的默认工程配置中Flash分配地址程序部分为0x08000000到0x08100000总共是0x00100000的大小也就是1048576Byte1024KB1MB而实际上程序部分大小应该要看硬件手册来确定可以通过配置keil工程中size的大小来确定程序地址的范围(如果太小了
目录一、引言二、概览三、实现HWC3.1为什么是HWC?3.2HWC的支持需求3.3HWC的实现思路3.4HWC的基元3.5HIDL接口3.6函数指针3.7图层和屏幕句柄3.8屏幕合成操作3.9多个屏幕3.10虚拟屏幕合成3.10.1模式3.10.2输出格式3.11同步fence3.12热插拔处理3.12.1概念理解3.12.2更新显示功能:3.12.3处理显示功能的更改:3.12.4常见的连接场景处理3.12.5使用顺序配置ID来防止竞争条件3.13客户端帧缓冲区管理3.13.1分辨率切换期间的帧缓冲区管理四、Layersanddisplays4.1Displays4.2虚拟屏幕五、VSYN
一、简介1.FreeRTOS简介 RTOS全称为:RealTimeOS,就是实时操作系统,强调的是:实时性。而Free显而易见体现的是其免费性。总的来说这是一个免费的嵌入式实时操作系统。 其特点是:免费开源、可剪裁(独立性强,适应范围广)、简单、优先级/任务不限(但是受到不同开发环境和硬件的限制,一般受限)、支持三种方式的任务调度。 与裸机的区别:裸机的应用程序整体来看放在整个大循环里,很多时候资源浪费即“空等待”;而RTOS是多个优先级相同的任务每个任务执行一个时间片(时间长度可以调节),来回切换,最终效果是所有优先级相同的任务同时进行,而且有任务被“阻塞”时,会释放cpu资源。2.任
在调试HAL库下的CAN双机(双F103ZET6)通信时,阻塞轮询接收完全正常,但是中断接收没有反应。翻看了GL的烧脑之路总结(一):Cubemx创建CAN通信工程,无法进入CAN中断的原因这篇文章以后,核实自己的硬件电路没有问题,于是对自己的工程文件进行整理,把①HAL_CAN_ConfigFilter(CAN_HandleTypeDef*hcan,CAN_FilterTypeDef*sFilterConfig)//配置can②HAL_CAN_Start(CAN_HandleTypeDef*hcan)//开始can③HAL_CAN_ActivateNotification(CAN_Handl
系列文章目录【STM32】HAL库新建MDK工程【STM32】HAL库定时器中断【STM32】HAL库PWM驱动LED呼吸灯文章目录系列文章目录前言一、SG90舵机二、STM32CubeMX设置三、代码前言使用按键控制PWM,驱动舵机一、SG90舵机舵机的控制一般需要一个20ms左右的时基脉冲,脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:高电平时间旋转角度0.5ms0度1.0ms45度1.5ms90度2.0ms135度2.5ms180度计数器自动重装值为ARR,0.5ms的计数次数为h。ARR/20=h/0.5,h=
硬件设备STM32F103ZET3开发板STLink功能实现发送ONLED亮发送OFFLED灭其他指令串口发送error实验过程波特率设置为115200、数据位8、奇偶校验位None、停止位1这里我采用的是中断的方式去实现串口控制LED,因此NVIC需要开启在usart.c文件中添加重定义后的函数/*USERCODEBEGIN0*/#include"stdio.h"intfputc(intch,FILE*f){HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,HAL_MAX_DELAY);returnch;}intfgetc(FILE*f){uint8_tch
(一)看参考手册学stm32基于hal库,点灯时钟配置这篇文章主要是个人的学习经验,想分享出来供大家提供思路,如果其中有不足之处请批评指正哈。废话不多说直接开始主题,本人是基于STM32F407VET6芯片,但是意在你看懂这篇文章后,不管是F1,F4,H7等一系列系统时钟配置都能明白如何通过参考手册去学习配置。而不是Ctrlc,Ctrlv。时钟配置首先看看数据手册目录找找有木有时钟相关的内容好定位。1.这句话就告诉你了你可以不用外部接时钟用它内部的就行,16MHz内部RC振荡器在出厂时经过修整,在整个温度范围内提供1%的精度。他是这么说但是我不这么相信,主要是我的开发板上有一块8M的外部晶振,
1、串口阻塞发送串口阻塞发送的意思就是,发送一段数据,在没有发送完所有数据之前,一直停留在此发送函数(可设定阻塞时间),这个过程中会阻塞别的程序运行;1.1、配置HAL库的配置分为两个层次,一个是HAL库内部调用的、与MCU硬件相关的初始化xxx_MspInit,一个是我们外部调用的初始化xxx_Init;这两个初始化函数配置完,就可以进行阻塞式的串口发送了,很简单。1.1.1、HAL_UART_MspInit HAL_UART_MspInit,MCU硬件初始化,需要开启RCC串口时钟、RCC的GPIO端口时钟、配置GPIO的模式;(还有个反初始化HAL_UART_MspDeInit,这里就不
STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFTLCD128X160ST7735S屏幕📌相关篇《【STM32CubeIDE】STM32F103硬件SPI驱动1.8寸TFTLCD128X160ST7735S屏幕》✨驱动效果就不做演示了,和上面的相关篇一样,主要是为了方便使用MDKKeil开发的使用。所以花了点时间从上面的工程当中做了分离,重新使用STM32CubeMX配置一个方便二次开发移植使用和配置的工程。本资源仅仅配置了SPI2的只发送主机模式。🌿1.8寸TFTLCD128X160ST7735SSPI屏🌴工程架构📑引脚定义🔖采用的是硬件SPI2:MOSI(SDA):P
Hello,大家好,这是我第一篇博客,写的不好请大家包涵指教,话不多说直接看内容:HAL库常用GPIO函数:voidHAL_GPIO_Init(GPIO_TypeDef *GPIOx,GPIO_InitTypeDef*GPIO_Init)这个函数主要用来初始化我们需要用到的引脚,设置其工作频率、工作模式、上下拉等参数。如果使用CubeMX配置工程,所有参数在Cube中调配,函数自动在工程中生成。voidHAL_GPIO_DeInit(GPIO_TypeDef *GPIOx,uint32_tGPIO_Pin)HAL_GPIO_Init能够实现对GPIO的初始化,那么HAL_GPIO_DeInit