在STM32H750XB上使用LWIP 在STM32H750XB上使用LWIP,H743等芯片也适用。主要讲述了配置H7的LWIP,与F4的不同之处。1.时钟树,主频400MHz2.MPU配置3.ETH的GPIO配置,设置为超高速4.关闭DHCP,自定义IP5.这时使用IAR或MDK编译就可以Ping通了STM32CuebeMX:V6.2.1工程:链接:https://pan.baidu.com/s/1E1rPV3W60hc1_XMO7PGfbg提取码:8rfb...
在STM32上使用FreeRTOS的Tickless(停止模式) 在STM32上使用FreeRTOS的Tickless(停止模式)RTOS的Tickless功能就是当程序运行在空闲任务中时,就进入低功耗模式,这个低功耗可以是普通的睡眠模式,也可以是停止模式。RTOS在进入空闲任务前,会计算出将要在空闲任务里跑多久,然后进入到空闲任务里就设置多久触发中断的定时器,从设置定时器到定时器产生中断这个时间段就可以进入低功耗模式。这就是RTOS的Tickless原理。1.打开低功耗定时器LPTIM1,使用默认配置即可,最后打开NVIC中断开关。2.LPTIM1的时钟源选择L
STM32的定时器TIM用作输入捕获 MCU:STM32H750XB编译平台:Keil-MDK5STMCubeMX版本:MX:V6.2.1 Pack:STM32Cube_FW_H7_V1.9.01.打开STM32CubeMX,配置定时器TIM2的通道3(PA2)为输入捕获。分频值根据自己需要设置,分频值越大采出的频率精度越低。周期最好拉满,这样采集时不会溢出。2.定时器TIM2的时钟源来自APB1,需要注意APB1有两种用途,一是给外设(不包括定时器)用的,为120MHz(H750主频拉满时),二是给定时器专用的,为上面的2倍即24
STM32H743的SDMMC外设上使用Fatfs 拉肚子,没事干,把白天调的一个程序发一下吧。写简单点,然后直接上程序。几个需要注意的点:1.SDMMC使用的是4线,STM32CubeMX勾上后使用默认参数,中断打开,优先级调得比较低。2.SDMMC时钟我试过60MHz和80MHz的,都正常,而用100MHz后就有点问题,不知道是不是SD卡的问题还是总线的限制。3.Fatfs勾上了自定义的,没有使用SD卡专用的,所以生成的工程接口需自己添加,Fatfs使用的也是默认参数。4.工程里面还有一些简单的Fatfs操作函数,可以参考。题外话:博主我也大
STM32利用STM32CubeMX驱动RGB屏 接上一次博客,上次SDRAM虚拟的内存起始地址为0xC0000000,这一次将作为LTDC显存的起始地址。1.打开上次的STM32CubeMX工程,勾上DMA2D,勾上LTDC并选择RGB888模式,即24位色,另外LTDC引脚复用很严重,需要根据自己板子改对应引脚。打开后在层设置里选择1层,STM32的LTDC一般可使用2层,正常情况下用1层足矣。设定长宽像素和颜色格式等。2.参数设置,根据自己RGB屏可微调。3.LTDC时钟一般30MHz左右即可,跟颜色格式和SDRAM位宽有关,颜色格式低时L
STM32利用STM32CubeMX驱动SDRAM STM32利用STM32CubeMX驱动SDRAM本次发布FMC总线驱动SDRAM的博客,为下次发布LTDC外设驱动RGB屏的博客做准备。利用STM32CubeMX和HAL库,生成的工程代码具有很强的可移植性,而且学会了可以自己再写其他板子的SDRAM驱动程序。1.首先打开CubeMX,新建一个工程,这里我用的是RT-Thread推出的STM32H750开发板,勾上外部晶振并设置CPU主频为480MHz,打开SWD调试口,打开调试的USART,勾上FMC总线。按以下参数设置。2.参数配置SDRAM
线性稳压器ME6209A33M3G应用电路 线性稳压器ME6209A33M3G应用电路一款比较简单实用的LDO芯片,最大可输出3.3V250mA,可用于给单片机最小系统等供电。1.参数:数据手册应用电路:3.已验证过的应用电路(之前画过一个STM32模拟U盘小PCB用过):4.实际效果:总而言之,这个芯片给小型系统供电还是挺香的。...
STM32驱动1.3寸IPS的LCD STM32驱动1.3寸IPS的LCD不多罗嗦了,交代几点:(1) 程序中可以用硬件SPI驱动也可以用模拟SPI驱动,通过宏定义选择。(2) 使用硬件SPI时,SCLK空闲电平设置为高,其他参数按CubeMX默认的即可。(3) SPI的MOSI线就是DIN,该线对于主设备(STM32)来说就是输出,对于从设备(LCD)就是输入,MISO线没用到不用管。(4) 关键代码:(5) 实际效果:源码:链接:https://pan.baidu.com/s/1xALudqs7mqXl4HaL6-S9H
使用LWIP的netconn接口在STM32上建立一个客户端 使用LWIP的netconn接口在STM32F429上建立一个客户端例程1.打开STM32CubeMX,新建一个工程,我的板子是官方NUCLEO-F429ZI,自带网口,适合搞网络协议栈。打开外设ETH,注意引脚要与实际对应。2.参数设置,注意PHY地址要设为03.打开调试串口USART1,参数按默认的即可4.打开FreeRTOS和LWIP,参数也不用更改,注意它默认使用了DHCP自动获取IP,当然也可以自己手动设置,自己设置的好处是提前知道自己的IP,测试时可以直接用电脑Ping开发板,来检查
STM32的定时器实现PWM呼吸灯 STM32的定时器实现PWM呼吸灯1.程序比较简单,不再啰嗦。首先是STM32CubeMX里的关键信息配置,下面没截图到的就按默认的没改。我的板子是ST官方的STM32F429ZIT6-NUCLEO,时钟设置的内部时钟源的180MHz,TIM1在APB2时钟线上180MHz,TIM3和TIM4在APB1时钟线上90MHz。使能了TIM1通道2的互补通道,对应的IO是PB14。使能了TIM3通道3,对应的IO是PB0。使能了TIM4通道2,对应的IO是PB7。当然也可以用其他IO,我的F429上三个
Linux下的OLED驱动(附源码) 今天搞了一天,把这个0.96寸的OLED屏,在我的i.MX6ULL板子上点亮。有几点注意:1.OLED的资料就是中景园的,里面有四个文件,oled.c oled.h oledfont.h和bmp.h,仔细观察留给用户调用的API函数可以发现,最底层都调用了一个往OLED控制器写一个字节的函数。所以我在驱动的oled_write函数中主要就是适配了这个往OLED写一个字节的函数。适配成功后,应用程序中写的显示字符串,显示数字,显示汉字等函数最终都会调用它,这就够了。2.OLED属于字符设备,然后上面那个
像RTOS一样进行Linux的pthread多线程编程 像RTOS一样进行Linux的pthread多线程编程举一个简单的例子,话不多说,上代码#include <stdio.h>#include <unistd.h>#include <stdint.h>#include <pthread.h>pthread_t MyTaskID_01, MyTaskID_02, MyTaskID_03; // 线程句柄void *MyTask1(void *arg) {
STM32的串口使用DMA实现任意字节的接收功能 STM32的串口使用DMA实现任意字节的接收功能注意事项:1.本例程由STM32CubeMX V5.6.1生成,并在STM32/GD32上验证过可行。2.我的板子是GD32F103C8T6,HSE为12MHz不是8MHz,所以大家参考时注意一下。3.程序中使用的是USART2(PA2-TX和PA3-RX),打开了串口接收中断RXNE和串口空闲中断IDLE。说明:1.CubeMX里的关键配置如下图2.主函数里打开串口接收中断RXNE和串口空闲中断IDLE,最后使用HAL_UART_Receiv
编译Linux内核时的一些问题及解决办法 **编译Linux内核时遇到的一些问题及解决办法**最近在编译Linux内核linux-5.0时,出现一些问题,故记录下来,也防止自己下次再编译时忘了。暂时只记录自己遇到的,后期若又遇到新的问题则再补充1.错误:配置内核时显示该错误"scripts/kconfig/zconf.lex.c"解决办法:安装库 sudo apt install flex2.错误:配置内核时显示该错误"scripts/kconfig/zconf.tab.h"解决办法:安装库 sudo apt instal