- 博客(43)
- 资源 (2)
- 收藏
- 关注
原创 一级路由访问家里的二级路由设备 例如nas
获取到超级密码后,关闭了防火墙,路由模式和桥接都可以在公网进行访问。才发现发现光猫下的无线网无法访问。
2024-12-07 20:11:28
1688
原创 stm32 g0 使用内部flash读写
个别芯片存储空间为32k,注意使用范围,并且利用debug或者.map文件,避开程序占用的页。g0hal库和其他系列有些不同,根据官方例程修改。GO30F6P6是 32k FLASH.基地址0x8000000,长度0x8000。即0x8000000-0x8008000。在keil配置的Target的rom和debug中flash选择可看到具体计算过程省略。
2024-10-11 16:44:08
481
原创 Modbus RTU 主机协议栈移植 STM32标准库
modbus slave遇到不少bug,在用06和03寄存器时,出现软件界面不显示写入的数据(但是发现有返回写入的数据),读寄存器时,从机地址为1时,发送的数据全为0,从机地址改为2和3没有此情况。因为很久没用使用标准库,这里犯过一个错,导致找问题花了一会时间,每次执行串口中断接收都会让程序跑飞,卡死。设定了10ms的TIM4,串口2接的485收发芯片,配置代码在这里省略。不正确的移植方法,在使用modbus slave时候,发送完就会卡死。工作中用旧项目用标准库试着修改,记录一下自己踩的坑。
2024-05-24 15:30:04
619
原创 STM32 硬件SPI应用 WK2124串口扩展芯片
一般使用Wk2xxxWriteFifo和Wk2xxxReadFifo。根据官方实例代码修改而成,具体寄存器参数请参考手册。SPI模式0.CS片选信号是自己用软件设定。仅列出读写寄存器修改,后续函数无需修改。全双工模式,8位数据,有效位为最高位。预分频结果最终在芯片工作范围内即可。port:串口1-4。
2023-04-13 10:11:00
1324
原创 FreeRTOS 事件组
xWaitForAllBits:pdTRUE: 等待的位,bit全部为1;pdFALSE: 等待的位,其中一bit为1。xClearOnExit :pdTRUE: 清除uxBitsToWaitFor指定的位;pdFALSE: 不清除。configUSE_16_BIT_TICKS设置为0 ,bitx(0~23);为了查看效果把串口任务优先级设置为最高,其他比串口低,阻塞时间相同。实现功能,当任务A,B完成后执行串口任务。后面更新以前调试过的任务通知功能。不知道这样使用方法对不对。不同任务用不同的位表示。
2023-04-11 15:34:57
729
原创 STM32CubeMX 移植TFTLCD
我这里的主频设置为168M 则HCLK=1/168M=6ns 再根据芯片手册的驱动时序计算。删除至红框中的函数,延时函数替换为HAL_Delay。这里也要替换下自己的代码风格。可以删除,因为初始化io口时已经为高电平。先把工程原本的u8,u16等统一替换成库文件原本的uint,也可以再自行typedef定义一遍。删除lcd.c中的一些初始化函数和代码。这些已经在fsmc.c和gpio.c中初始化好了。RST复位引脚与32的复位引脚相连,上电复位。不同引脚选择的 NEx不同。TFT的背光高电平点亮。
2023-03-23 16:27:22
817
原创 STM32空闲超时接收中断方式
以前一直用DMA方式接收数据,今天试了下中断接收方式,简单测试下。这样每一次接受数据都是会重头覆盖读取,不会发生错位问题。已配置好串口收发模式和NVIC。
2023-03-23 10:59:25
942
原创 蓝牙HC05常用调试指令
拿到手后,用USB转串口工具接上电源和地,以及交叉相连tx和rx引脚,按住模块上的小黑点再通电进入AT模式。AT+UART=115200,0,0, 波特率修改为115200,0停止位,0校验位。波特率调整为38400,这是AT模式的通信波特率。AT+ROLE或AT+ROLE?,返回当前主从模式,1表示主机,0表示从机。AT+ROLE=X,修改主从模式,X为1或0,对应主机和从机。AT+BIND=XX,XX,XX,修改绑定地址(CMODE=0)发送AT加回车,返回OK表示通信成功。
2023-03-21 09:50:42
2698
1
原创 STM32 PWM输出
其他高级定时器原理相同,需要用到哪个引脚就开启对应某个通道。Clock source一般选择内部时钟。主频设定为64MHz,预分频64,重装载值1000.PWM频率为64M/64/1000=1k。用启动PWM和设置TIM捕获比较寄存器的值 函数。占空比为500/重装载值 50%使用基本的PWM输出。
2023-03-17 09:40:54
230
原创 STM32 HAL库 软件触发ADC 多通道连续转换
这里我把6和3不按从小到大的顺序排列。转换模式选择Backward则是从大到小顺序。注意,自定义转换顺序模式对通道数量有限制。12BitADC,没有开启过采样。不同通道转换顺序可自定义。想要使用后面几个adc通道需要选择。此时通道转换顺序从小到大。使能扫描和转换模式。
2023-03-15 09:45:30
2015
原创 回想自己当初刚学单片机
上的民办本科条件太拉了,没办法自己怂选的,技能大赛没被保送,省赛客场比赛差一分进国赛,3个人比赛,有个一直划水的,也没办法,实验室真正会做东西的就几个人,都各自负责不同项目。记得stc有个冷启动我不小心勾上了,导致没法下载程序,我以为被我玩坏了,后来百度解决的。对大二开始学的stm32,跟着正点原子视频入门,我看视频课容易睡觉,听不下去理论的,但还是和当初学c51一样研究了底层。后面就开始学画板子,各种主控板和电源板,还有自己找些感兴趣的东西进行制作,不是很高大上的东西,就不献丑放出来了。
2023-03-10 14:49:25
143
原创 Freertos下微秒延时函数
使用的是M0内核的芯片,没有DWT,定时器方法也不能使用,无法驱动一些靠硬件协议的传感器。有人使用的是滴答定时器,试验了下可行,故此记录一下。有没有别的方法,求教。
2023-02-24 16:48:27
1830
原创 2021电赛F题数字识别和巡线部分
继19年电赛在专科拿过一次国一后,没想到在本科这边又拿了一次。唯一一次遗憾的就是智能车了,但那个是外在因素,等完全毕业之后再谈。这次电赛我没有准备多少东西,只提前准备了图像识别和坐标计算一类的。在20年的省赛帮过雪地调过k210后,自己后来为了比赛,也买了一个。参加了省物联网和交通科技比赛。没有用openmv是因为它价格昂贵,带神经网络计算的plus版我没有考虑。由于这边学校对竞赛支持力度不大,经费不多,所以我就用了一块k210.用它作识别和巡线其实是完全够用的。只需要写个判断分开就好。..
2022-04-20 16:42:19
10484
27
原创 用union记录硬件地址位
板子上留有拨码开关,用来级联不同板子,判断是哪块板子发送的数据。头文件中声明#define Address1_IN HAL_GPIO_ReadPin(Address1_GPIO_Port,Address1_Pin)#define Address2_IN HAL_GPIO_ReadPin(Address2_GPIO_Port,Address2_Pin)#define Address3_IN HAL_GPIO_ReadPin(Address3_GPIO_Port,Address
2022-04-20 16:37:55
393
原创 使用共同体进行串口收发
.h#ifndef __TEST_H#define __TEST_H#include ""#define BufferSize 7struct Status_BYTE{ uint8 Head, Com, UID[2], POT[2], checksum;};union Send_Data{ struct Status_BYTE byte; uint8 all[BufferSize];};e.
2022-03-07 15:45:52
403
原创 STM32 HAL库 串口DMA接收不定长数据
上一期配置https://blog.youkuaiyun.com/zy19981110/article/details/123005092?spm=1001.2014.3001.5501参考他人的代码https://blog.youkuaiyun.com/euxnijuoh/article/details/81638676?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.pc_releva
2022-02-24 17:36:12
3413
2
原创 STM32CubeMX的使用,配置DMA串口
这次记录下最近调用的外设。DMA以前用得很少,只通过ADC采集使用,开启后就直接读那个数组就可以了。我对dma的理解就是不占用cpu,数据传输速度快,可以直接从外设和内存间相互读取。目前的工作用的芯片只能使用hal库开发,stm32g0系列性价比高。用cubemx把基础外设全配置跑了一遍,给我最大感受就是方便快捷,在st自家芯片中移植性强。时钟和晶振配置不多说了,网上都很全了,可以不使用外部晶振,但HCLK最大只能到64M,最好还是外接晶振让系统更可靠稳定吧。这里我创建了个新的ioc文件,之
2022-02-18 16:55:14
13350
原创 AS5045B/AS5145 零位编程 OTP
因为项目需要修改零位,最终没有采用硬件SPI,发现OTP操作需要用到芯片手册中特定的时序,于是采用IO模拟的方法。下图是芯片的寄存器,蛋疼的是根据官方手册和例程,知道这款芯片需要对寄存器所有位进行操作,所以需要先读一遍寄存器,再把零位数据Z11-Z0依次写入。AMS公司有别的芯片,可以通过spi选择寄存器对某些功能进行改写。有关SSI通信的还有另一种,AS5045不带B的,那个貌似只需要直接写16位命令即可,比较方便,没有实际动手尝试过。对芯片进行写/编程操作分4块步骤。
2022-02-11 14:51:47
5686
原创 PIC16F18xx软/硬件SPI驱动磁性传感器AS5045B(附SPI模式分辨方法)
PIC16F1823软硬件SPI驱动磁性传感器AS5045B(附SPI模式分辨方法)
2021-12-23 15:30:41
1444
原创 stm32定时器扫描数码管(无锁存器)和矩阵按键
如果不使用定时器,会有很多冲突。比如数码管显示不正常,按键响应问题。定时器时间消隐效果还不错,根据实验室另一个光伏项目的朋友用stc15代码改过来的。数码管#ifndef __LED_H#define __LED_H #include "sys.h"#define DX0 PAout(0)#define DX1 PAout(1)#define DX2 PAout(2)...
2019-07-02 19:27:46
2930
1
原创 DMA多通道AD
初始化及配置#include "ACS712.h"__IO uint16_t ADC_Value[2] = {0, 0};void adc_Configuration(){ GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStruct...
2019-07-02 19:10:45
1632
原创 STC单片机超声波程序
HCSR04个人看来是个一般的超声波//Trig = P1^0//Echo = P3^2/*****************************...
2019-05-18 10:11:53
3112
1
原创 分贝检测传感器
这里只需要注意校验就行了,我们直接跳过第一个校验,校验第二个0xAA就行了。最奇葩的是倒过来的。不需要程序都可以用usb转串口发数据.bit f_r;unsigned char f_1,r[3];void UartInit(void) //115200bps@11.0592MHz{ PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR...
2019-05-18 10:08:22
4195
5
原创 AD采集(电位器模拟温度)
以前的比赛和训练题目,也就是用滑动变阻器改变电压,然后进行AD采集可以用于此方面功能,第三小题当时比赛现场写的,这里没体现此功能。可以配合我之前写的pwm控制电机程序实现#include <STC12C5A60S2.H>#include <intrins.h>#define uint unsigned int#define uchar unsigned c...
2019-05-08 11:12:20
4220
原创 SYN6288中文语音合成 程序
51单片机比较麻烦些,用到串口,因为会被占用,所以每次下载程序都要重新拔插。注意接收和发送两头别接同错了。#include <reg51.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned int//**********************************...
2019-05-08 10:59:18
8248
1
原创 HX711称重模块程序(程序已过时,早期写的不行。而且建议用tm7711)
去年省比赛准备51模块程序之一.以上部分截自于厂家数据手册。#include <STC12C5A60S2.H>#include"lcd12864.h"unsigned long HX711_Buffer = 0;unsigned long Weight_Maopi = 0;unsigned long Weight_Maopi_0 = 0;...
2019-05-08 10:55:20
27872
4
原创 HC-SR501人体红外感应模块程序
当感应到时,输出一个高电平。这里我对io口进行了配置,要不然读不到高电平。建议大家以后养成习惯,对io口进行配置,stm32中会用到。在这里我额外提下,一般在stm32中 浮空输入芯片内部没有接上下拉电阻。由于其输入阻抗较大,这种模式一般用于标准通信协议,如I2C、USART的接收端等模拟输入模式:芯片内部由另一条线路把电压信号传送到片上外设模块。如传送至ADC模...
2019-05-08 10:49:18
22707
4
原创 不同单片机ms级延时函数(stc12和51) 较为精准
stc12void delay(uint z){ uint x,y;for(x=z; x>0; x--) for(y=920; y>0; y--); }89c51/52void delay(uint t){ uint i; while(t--) for(i=0;i<110;i++);}用来写...
2019-04-22 10:52:04
4284
原创 LCD12864驱动显示程序
这里是用的并行写法,后续会更新串行 。并行缺点就是太占用io口了,我其实更喜欢用串行。不过不是比赛要求都不怎么用了。lcd12864.c#include"lcd12864.h"uchar code num[]={"0123456789 e:.-"};sbit RS = P3^5; //命令/数据选择 sbit RW = P3^6; //读写...
2019-04-22 10:49:30
19958
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人