自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 我的创作纪念日

计算机应用专业毕业,从事近一年黑盒测试,本以为会一直做下去,在第二家公司得到机遇转行做嵌入式开发至今,沪漂7年做了这么久也发现基础欠缺,恰巧遇到瓶颈期,在过渡期间报名嵌入式开发培训班从汇编、驱动、内核、系统重新学起,整理学习过程中的知识点,并分享自己的心得。获得了200+的粉丝,300+的赞,有一篇文章被Devpress社区收录。瓶颈期通过培训系统学习嵌入式架构、工具、开发总结,在此之前面试遇到单片机的问题容易出现卡壳或不知所措,经过学习后基础夯实,自信上升,谈吐轻松,顺利进入新的公司。

2025-05-08 11:01:25 143

原创 STM32H743单片机实现ADC+DMA多通道检测+事件组

在上个文章基础上改用事件组进行处理,以便实时任务。stm32cubeMX自动生成代码。编写代码DMA回调函数触发事件。

2025-05-06 14:33:58 285

原创 STM32H743单片机实现ADC+DMA多通道检测

生成代码,HAL_ADC_Start_DMA开始DMA读取ADC值,HAL_ADC_Stop_DMA关闭DMA读取。在stm32cubeMX上配置ADC+DMA实现多通道检测功能。

2025-05-06 13:39:09 484

原创 正点原子STM32H743单片机实现ADC多通道检测

在处理ADC时发现ADC时钟配置需要处理,可能默认即可,这里试了下是没问题的,一开始使用的HSE作为ADC时钟,导致无法获取ADC参数。启动adc转换前必须先校准adc,在HAL_ADC_ConvCpltCallback中断回调函数中,处理对应ADC的代码,由于HAL_ADC_Start_IT调用后会一直不间断轮询,通过HAL_ADC_GetValue函数可直接获取ADC值,HAL_ADC_Stop_IT函数作用关闭当前ADC转换。共14个ADC引脚,ADC2有5个,ADC3有9个,全部设置单通道。

2025-04-30 17:12:52 819

原创 解决STM32H743单片机USB_HOST+FATF操作usb文件

网上很多资料都是将f_mount挂载接口直接放在USBH_UserProcess回调中,一开始我也是这么处理,尝试了增加USB线程的栈内存大小没有起到用处,之后使用异步操作,在USBH_UserProcess回调中新建全局变量,触发对应状态后,在FileControlTask线程中进行单独处理。USB_HOST配置由于只配置了USB_OTG_FS,因此此处只有Class for FS IP,这里选择MSC,表示只检测U盘,属性配置中USBH_MAX_DATA_BUFFER=512Byte表示磁盘分区大小,

2025-04-29 18:29:31 669

原创 正点原子STM32H743单片机实现tcp通信

通过芯片手册可以得出,芯片上电先验证芯片ID(寄存器0x02的值=0x00、寄存器0x03的值=0x128),网上查的一些资料都是需要寄存器0x03的值=0x13,但是实际操作过程中发现是0x128,不确定有没有什么影响,之后进行软复位(芯片寄存器0x00,写入0x8000),等待100-500ms,当Link_Status置一时才能正常启动以太网(寄存器0x01,读取Link_Status的值)。在LAN8742_Init接口中按照默认即可,也可将pObj->DevAddr地址值设为1,即addr=0。

2025-04-22 11:59:12 769 1

原创 PC端QT实现mqtt客户端发布和订阅

在Windows11-64位系统下使用QT开发桌面应用程序,实现mqtt客户端的发布和订阅功能。需求:mqtt代理服务器 --mosquitto;mqtt客户端工具 -- mqtt.fx;qtcreator开发工具 -- qtcreator6.8.2版本;

2025-03-11 16:09:26 1015

原创 STM32MP157A单片机移植Linux系统使用python链接云服务器

以上代码通过python语言进行tcp通信,以本地作为tcp客户端上传数据给云端tcp服务端,本地采集传感器数据,此处客户端代码仅做示例,直接传输数据,具体根据实际情况将采集数据传输即可,云端tcp服务端将接受到的数据保存到云端MySQL数据库,在云端数据库中可以查看。tcp_server.py:需要注意的是,修改MySQL的密码为自己的MySQL密码,修改端口号,该代码主要实现python下tcp服务端的监听功能,并将接受到的参数保存到MySQL数据库内。

2025-03-03 10:39:27 701

原创 STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

需要注意在SPI4设备树信息中,一定要加spi-max-frequency属性,该属性用于设置spi的主频,如果没有,可能出现无法正常启动spi或启动spi后控制数码管时,数码管显示出现错位现象。原理图可知,数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-SCK,PE13-->SPI4-MISO,PE14-->SPI4-MOSI。应用程序 --> 实现在数码管上依次显示数字。

2025-02-25 14:48:55 644

原创 STM32MP157A-FSMP1A单片机移植Linux系统I2C总线驱动

在Linux内核中,arch/arm/boot/dts/ 设备树文件 --> stm32mp157a-fsmp1a.dts,I2C对应的GPIO复用信息 --> stm32mp15-pinctrl.dtsi。由于I2C总线驱动为Linux内核自带的总线驱动,在一个新的板子上可能由于不同的定义与芯片原厂定义的I2C管脚有所不同,这时就需要开发人员对设备树信息及内核驱动进行更新。原理图可知,I2C的SCL对应PF14,SDA对应PF15。应用程序 --> 实现通过I2C获取温湿度数据。

2025-02-25 14:22:00 388

原创 STM32MP15-FSMP1A单片机移植Linux系统platform总线驱动

在Linux内核中,对于驱动的处理,一般会通过总线进行设备信息和设备驱动的匹配,来达到自动检测外设连接系统以及驱动外设的效果,设备信息由内核设备树写入,内核驱动则对设备树信息进行相关的注册、注销等操作,实现效果:设备信息包含可控制的gpio或i2c,驱动对gpio进行高低电平的控制或进行i2c通信获取从机数据。上图是Linux内核驱动使用内核自带总线驱动进行处理时的处理方式,其中由I2C、PWM等总线驱动,但是实际使用时很多外设驱动不在自带的总线驱动中,因此引入platform虚拟总线驱动以实现相关功能。

2025-02-25 09:23:46 439

原创 STM32MP157A单片机移植Linux驱动深入版

申请一个struct device结构体,保存当前设备节点的信息 --> device_create。3.功能码 --> _IO() / _IOW / _IOR / _IOWR ...设置GPIO方向为输出 --> gpio_direction_output。通过名称查找设备节点 --> of_find_node_by_name。获取GPIO编号 --> of_get_named_gpio。获取应用程序发送的值 --> copy_from_user。释放GPIO --> gpio_free。

2025-02-21 20:34:35 774

原创 STM32MP157A单片机移植Linux驱动

在stm32mp157a单片机移植Linux操作系统,并移植内核驱动,在应用程序中使用3个线程,分别实现控制单片机上3个led流水灯的功能、蜂鸣器控制的功能、风扇控制的功能。

2025-02-20 14:32:18 722

原创 FreeRTOS实时操作系统学习小结

通过任务调度实现多任务创建,达成处理多任务的操作,FreeRTOS主要使用抢占式的调度方式,指高优先级的任务可以比低优先级的任务优先执行,调度器先选择最高优先级的任务,其他任务会进入挂起态,直到调度器下一次选择该任务。创建软件定时器任务,设置回调函数用于软件定时器到时间后需要执行的动作,可以实现软件定时的功能,需要注意定时器优先级,如果优先级比正常任务低会导致定时器无法正常使用。任务通过消息队列传递消息,每个消息都有单独的ID,一个任务向队列发送消息,另一个任务从队列中接收消息,可以实现任务间的消息交换。

2025-01-26 11:26:33 568

原创 STM32单片机的学习总结

从计算机基础、寄存器知识、汇编指令、中断以及各外设驱动的开发,单片机底层经过这段时间的学习做一个总结。

2025-01-18 15:52:56 1287

原创 STM32U575单片机使用DMA搬运USART数据

STM32U575单片机使用DMA搬运USART数据

2025-01-14 21:37:03 553

原创 STM32U575单片机使用cubeMX工具通过DMA获取芯片电压并在UART上打印

STM32U575单片机使用cubeMX工具通过DMA获取芯片电压并在UART上打印

2025-01-14 20:25:34 757 2

原创 STM32MP157AAA使用定时器寄存器控制蜂鸣器PWM输出

STM32MP157AAA使用定时器寄存器控制蜂鸣器PWM输出,PWM驱动

2025-01-14 14:15:56 669

原创 LCD显示屏ILI9341芯片接口定义和使用SPI驱动分析理解

LCD显示屏ILI9341芯片接口定义和使用SPI驱动分析理解

2025-01-12 21:35:17 2768

原创 STM32U575单片机通过SPI总线控制LCD屏显示字符串

STM32U575单片机通过I2C总线通信获取拓展板上温湿度传感器数据,并将温度和湿度的数据通过SPI总线通信传输到LCD显示屏上进行显示

2025-01-11 11:40:27 1744

原创 STM32MP157AAA开发板通过GPIO模拟SPI驱动通信控制数码管

STM32MP157AAA开发板通过GPIO模拟SPI驱动通信控制数码管

2025-01-09 20:57:39 554

原创 STM32MP157AAA开发板通过GPIO实现模拟I2C驱动获取光照,红外,接近传感器的数据

在STM32MP157AAA开发板上通过GPIO模拟I2C驱动拓展板上光照,红外,接近传感器(AP3216C)的实验

2025-01-08 21:14:57 754

原创 STM32MP157AAA开发板通过GPIO实现模拟I2C驱动获取温湿度传感器数据

在STM32MP157AAA开发板上通过GPIO模拟I2C驱动拓展板上温湿度传感器,获取温度和湿度的实验

2025-01-08 19:29:02 375

原创 STM32U575单片机通过串口和按键中断两种方式切换模式

单片机现有3种工作模式:1.LED控制模式-PC42.FAN控制模式-PC63.BEEP控制模式-PA15可以在某一个模式下通过按键KEY1-PC9控制设备:按键按下一次,设备打开,再按下一次,设备关闭(设备管脚输出反向电平);通过两种方式切换模式:1.通过串口UART1通信,pc端发送当前模式:LED,FAN,BEE2.底板用户自定义按键USER-PA12进行模式切换,按键按下一次进入LED,再按一次进入FAN,再按一次进入BEEP,循环切换

2025-01-07 19:19:45 513

原创 STM32U575单片机UART驱动的私人理解

UART(通用异步收发器)和USART(通用同步异步收发器)驱动理解

2025-01-07 11:14:48 621

原创 STM32MP157AAA+按键中断控制LED亮灭

STM32MP157AAA+按键中断控制LED亮灭,整理中断原理和程序执行逻辑

2025-01-06 20:29:02 358

原创 STM32U575单片机GPIO驱动的私人理解

什么是驱动?以及GPIO驱动理解

2025-01-06 11:10:21 440

原创 keil-C语言-单片机STM32U575实现UART控制LED灯的开关

今日练习:keil-C语言-单片机STM32U575实现UART控制LED灯的开关,由于使用了STM32CubeMX工具,关于UART和GPIO相关的初始化配置已经简化,本次只有实现功能代码,共勉

2025-01-03 20:30:36 727

原创 汇编语言实现LED闪烁:STM32MP157AAA-ASM-GPIO-ON&OFF-TEXT

干了几年的嵌入式软件开发,总结发现对底层驱动的了解太过欠缺,报了个培训班从汇编开始学期,第一期课程任务-在STM32MP157AAA上对GPIO进行控制实现3个LED灯闪烁效果

2024-12-31 21:09:57 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除