单片机
文章平均质量分 61
山间朝暮-CanEve
这个作者很懒,什么都没留下…
展开
-
CH571F蓝牙orUSB摇杆鼠标
然后是主循环,虽然好像蓝牙也有个类似于任务排序的函数,但不是很会用,所以并没有用自带的调度程序,而蓝牙程序中不能长时间被其他程序占用,不然会丢失蓝牙连接,所以我没有用延时,使用的定时器计时。程序基本上是基于官方的例程上改的,用到的例程有:蓝牙的HID_Mouse,USB的CompoundDev,还有ADC,按键中断。主要原理就是ADC采集采集摇杆电压,通过蓝牙HID或者USB的HID发送给电脑或者手机,实现鼠标功能。最后是主循环,里面就是蓝牙、USB和ADC的调用程序。原创 2024-08-04 22:54:53 · 504 阅读 · 0 评论 -
CH571F基于官方模版创建工程
直接使用MounRiver创建的工程只有最简单的串口和GPIO功能,其他PWM和SPI等驱动基本上都有,但蓝牙和USB只有参考官方的示例来,全部自己写属实有点麻烦了,而且还需要添加BLE的库。使用WCHISP连接芯片(我这里用的usb连接,先断电,按住boot,然后再接USB上电,会自动识别,选择程序文件(导出程序文件的方法可以看我很久以前的一片文章))还有APP下的三个文件(其中有一个是main,我直接替换的原本创建的文件中的内容,记得保存文件修改 )2.打开官方的例程(我这里用的BLE鼠标的工程)原创 2024-07-28 21:01:45 · 415 阅读 · 0 评论 -
STM32F103 RT-thread配置LCD的FMC
然后把FMC初始化代码从main.c中拷贝出来,放到其他编译文件中(我是放在stm32f1xx_hal_msp.c中)按照参考教程配置,在最后你会发现屏幕没有反应,因为没有初始化代码,而如果取消掉参考文章所注释的内容也会报错,类似这样的。我选的的标准版,没有选择基于开发板,因为感觉基于开发板很多都已经配置好了(哈哈,主要是学习配置流程)使用的正点原子F103ZET6开发板,屏幕是一块4.3寸的TFTLCD,接下来直接讲配置流程。点开cubemx的配置界面,调试接口。其他的照着选就行,我也是看别人的教程。原创 2024-07-27 20:16:35 · 409 阅读 · 0 评论 -
AHT20传感器简单使用记录
在CSDN上看了很多文章都是用的模拟IIC读取的,代码太冗余了。也找到有用hal库的,但是读取出来数据不对,发现是代码有些小问题,改了之后就能用了。下面就把改好的贴在下面。使用方法也很简单,初始化之后直接调用读取函数就行。原创 2024-05-06 10:14:52 · 273 阅读 · 0 评论 -
STM32无法识别芯片或者能识别无法下载,提示flash timeout
4.然后断开连接,再使用keil就能下载了,如果还是报错。就重复刚才修改保护等级那,把需要修改的部分取消勾选,然后再应用更改。我这里直接取消了所有的保护区域。之前打了一块F401的核心板测试,只买了一颗芯片,焊上之后首先是无法识别,当时为了方便,只焊了一部分原件。3.apply应用更改后,就能读出芯片数据了。1.选择Option Bytes。其实是芯片开启了写读写保护,这时stlink就能识别了。2.将保护等级设置为0。但是下载程序还是报错。连接还是提示无法连接。原创 2024-02-11 23:18:43 · 1485 阅读 · 0 评论 -
HSCMRNN030PA2A3绝压传感器简单使用
压力数据的计算公式,outputmax和outputmin都不变,pressuremax就是传感器测的最大值,我这里是30psi,同理pressuremin就是能测的最小值,我这里是0psi,代码中我计算扩大了100倍。byte1的前两位是状态位,00就是正常,byte1的后6位,和byte2一共有14位是数据,需要把byte1的后6位左移8位再加上byte2的8位共同合成压力数据。里面有个型号表,我用的就是iic协议,0~30psi(1psi=6895pa),温度和压力转化有个公式,参考霍尼韦尔的。原创 2024-02-02 09:34:24 · 321 阅读 · 0 评论 -
沁恒CH571软件IIC
下面是IIC的实现函数,我是直接改的其他程序的,忘了是哪copy来的了,需要修改的可能就是用不同屏幕或者其他iic设备需要改一下地址。因为没怎么用这个芯片,所以配置还没有完全搞清楚,就先尝试的软件模拟IIC,毕竟只要有两个GPIO就能用。CH571蓝牙接收,即刻显示内容。我用的是P13和14。原创 2024-01-09 20:29:04 · 681 阅读 · 0 评论 -
OLED旋转任意角度显示,含C语言打印
实现了6x8字符和8x16字符以及16x16中文的旋转显示(旋转数组使用的16x16),不过中文在旋转时可能会出现超过显示区域的情况,因为16x16的旋转会超过这个大小,有需要的可以自行根据程序修改。6x8的字符我就不贴了,可以根据8x16的进行修改,只是我用的旋转数组为12x12。在之前90度旋转的基础上,利用旋转矩阵,完成了任意角度旋转的程序。中文会出现超出区域的情况,使用需扩大旋转和显示区域。这里我直接贴出stm32的代码。字符和中文的数组格式如下。原创 2023-12-29 09:37:42 · 861 阅读 · 0 评论 -
OLED旋转显示方向,SH1107 软件实现屏幕内容旋转90度显示
因为屏幕驱动芯片自带的智能设置180度,并不带有90度旋转功能,所以自己写了一份简陋程序。这里只以6*8和8*16的字体为例,其他大小或者中文可以自行修改。旋转90度的程序,这里6*8和8*16都可以,只是8*16多了一格。如果显示字符串只需要吧原来的字符显示替换掉就可以了。我直接给出原版和修改后的代码。这里再给出测试用的C语言程序。原创 2023-12-13 00:26:34 · 928 阅读 · 0 评论 -
RT-Thread配置STM32的SPI Flash,SFUD,FAL,easyflash流程
说明一下环境和设备:RTthread studio+cubemx,芯片是stm32f429bit6+w25q256fvrtthread版本是4.1创建工程就不说了,只需要基本工程就行,可以参考我之前的文章这里就直接说需要改哪些地方吧,在基础工程(串口正常打印)上,打开这3个功能(可以单独使用sfud或者sfud+fal),打开后修改相应的地方就行。原创 2023-12-13 00:07:30 · 800 阅读 · 0 评论 -
STM32使用RT-thread完成点灯,pwm,按键中断,定时器中断,ADC
开发工具使用的是RT-thread Studio。完成按键中断,adc读取,pwm输出与定时器中断功能原创 2023-10-24 17:45:10 · 976 阅读 · 4 评论 -
荔枝派Lichee Pi/planckpi/f1c100s添加i2c并驱动oled(sh1107/ssd1306)
添加i2c的设备树,编译出来进行替换(SD卡中已经有系统的可能需要全部编译uboot,linux,buildroot然后重新写入SD分区中,参考上面的博客)第一句就是写 命令(第一个是设备地址,第二个是oled的命令或者数据寄存器,第三个就是要写的命令或者数据),第二句是写数据(00命令,0x40数据)编译和写入SD卡后,启动系统,默认root,无密码。我们在连接好屏幕之后(具体引脚看设备树中添加的,我的sda是e12,scl是e11)就可以看到oled屏幕点亮了,只是屏幕是画的,因为还没有给显示的数据,原创 2023-07-19 23:10:08 · 938 阅读 · 2 评论 -
超简单GPIO模拟实现可变波特率异步串口收发(STM32)
使用外部中断捕获数据开始位,关闭中断,然后定时器计数清零重新计时,每隔1/波特率s采样一次数据,然后移位合成一个字节开启中断进入下一个等待接收状态(首先使用逻辑分析仪查看ch340串口数据波形,根据波形写接收逻辑即可。发送更简单,只需要发送开始位后每隔1/波特率s发送一位数据即可(注意使用定时器需要先开启。),最后再发送停止位。原创 2023-07-06 10:46:55 · 1487 阅读 · 0 评论 -
沁恒CH57x蓝牙(RISC-V)开发记录
沁恒CH57x蓝牙(RISC-V)开发记录,画了块ch571f和ch579m二合一的开发板,ch571是risc-v的芯片,ch579是m0的。之前一直用的stm32,刚接触risc-v开发还是碰到许多需要琢磨半天的问题。原创 2023-06-08 14:02:38 · 1654 阅读 · 0 评论 -
STM32使用sr04超声波一收一发测距,可实现空间定位
发送端用的一个stm32来控制,发送与接收的同步信号使用的红外,接收端接收到红外信号后开启1us的定时器计时,发送端每个超声波模块发送间隔40ms(避免间隔时间太短,声波反射干扰)。使用的三个模块在不同位置发送超声波,然后接收端得出接收端与三发送端的距离,如果已知三发送端的坐标,根据三个距离值即可计算出接收端的坐标。这里需要用逻辑分析仪或者示波器来查看发送和接收的时间差,进行微调,以及消除某些干扰信号。hal库,这个有问题,还没有修改,可参考标准库的代码修改。原创 2023-05-11 16:11:41 · 969 阅读 · 2 评论 -
ESP8266访问https地址,ESP32
ESP8266访问https地址,ESP32访问https地址原创 2023-03-08 20:16:16 · 1772 阅读 · 0 评论