- 博客(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
原创 STM32U575单片机使用cubeMX工具通过DMA获取芯片电压并在UART上打印
STM32U575单片机使用cubeMX工具通过DMA获取芯片电压并在UART上打印
2025-01-14 20:25:34
757
2
原创 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
原创 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关注的人