草庐IT

RT-Thread GD32F4xx CAN驱动

1、编写CAN驱动  在RT-Thread的bsp文档中没有找到GD32F4xx的CAN驱动文件,此处参考STM32的drv_can编写CAN驱动。1.1创建CAN设备1.1.1CAN设备结构体structgd32_baudrate_tab{rt_uint32_tbaudrate; //波特率rt_uint8_tsjw; //配置参数rt_uint8_tbs1; rt_uint8_tbs2; rt_uint16_tprescaler;

Android图形-Hardware Composer HAL

目录一、引言二、概览三、实现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

STM32 hal库使用笔记之FreeRTOS—任务创建、删除,任务挂起、恢复,任务中断管理

一、简介1.FreeRTOS简介  RTOS全称为:RealTimeOS,就是实时操作系统,强调的是:实时性。而Free显而易见体现的是其免费性。总的来说这是一个免费的嵌入式实时操作系统。  其特点是:免费开源、可剪裁(独立性强,适应范围广)、简单、优先级/任务不限(但是受到不同开发环境和硬件的限制,一般受限)、支持三种方式的任务调度。  与裸机的区别:裸机的应用程序整体来看放在整个大循环里,很多时候资源浪费即“空等待”;而RTOS是多个优先级相同的任务每个任务执行一个时间片(时间长度可以调节),来回切换,最终效果是所有优先级相同的任务同时进行,而且有任务被“阻塞”时,会释放cpu资源。2.任

STM32 HAL库 CAN双机通信接收无法进入中断、中断没有反应的解决方法

在调试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

关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus,实现modbus tcp

关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus这里使用了大佬小灰灰搞电子的代码,文章看STM32F407+LAN8720移植Lwip和freeModbus实现MODBUSTCP代码看STM32F407+LAN8720+LWIP移植freemodbusTCP.zip他的代码是基于正点原子F407的板子开发的,如果是别的板子,需要修改引脚小灰灰的代码里,没有对02功能码的处理函数进行完善,在port.c中,修改eMBRegDiscreteCB函数如下:/*****************************************************

【STM32】HAL库 PWM驱动舵机

系列文章目录【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=

简单小实验——串口控制LED灯(HAL库)

硬件设备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库,点灯时钟配置

(一)看参考手册学stm32基于hal库,点灯时钟配置这篇文章主要是个人的学习经验,想分享出来供大家提供思路,如果其中有不足之处请批评指正哈。废话不多说直接开始主题,本人是基于STM32F407VET6芯片,但是意在你看懂这篇文章后,不管是F1,F4,H7等一系列系统时钟配置都能明白如何通过参考手册去学习配置。而不是Ctrlc,Ctrlv。时钟配置首先看看数据手册目录找找有木有时钟相关的内容好定位。1.这句话就告诉你了你可以不用外部接时钟用它内部的就行,16MHz内部RC振荡器在出厂时经过修整,在整个温度范围内提供1%的精度。他是这么说但是我不这么相信,主要是我的开发板上有一块8M的外部晶振,

STM32F4_HAL库_串口阻塞/中断/DMA三种方式发送数据的配置

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,这里就不

STM32F4驱动OV7670总结

前言:之前因为贪图便宜买了一个7块钱的ov7670摄像头,然后想用我的stm32开发板驱动起来结合rtthread做个小项目出来,但是一路上遇到了许多问题,最终没能成功,在此记录一下用stm32驱动ov7670的过程项目框架如下:现阶段只能驱动起lcd屏幕,在摄像头驱动这一步卡住了。屏幕部分:液晶控制器芯片为NT35510,NT35510控制器根据自身的IM[3:0]信号线电平决定它与MCU的通讯方式,它本身支持SPI及8080通讯方式,本示例中液晶屏的NT35510控制器在出厂前就已经按固定配置好(内部已连接硬件电路),它被配置为通过8080接口通讯,使用16根数据线的RGB565格式,且背