- 博客(84)
- 资源 (32)
- 收藏
- 关注
原创 GPIO模拟实现9bit spi接口读写时序
参考如下时序图,SPI读时序需要先发送一个0bit,然后再发送8bit的地址,间隔一个周期,再接收8bit的数据。SPI写时序先发送一个为1的bit,然后再发送8bit的地址,紧接着发送8bit的数据。本文实现上哟你GPIO模拟实现9bit的spi 读写功能。
2024-08-12 15:36:42 295
原创 vs2008编译报错:1>cl: 命令行 error D8016 :“/MTd”和“/clr:oldsyntax”命令行选项不兼容
1>生成日志保存在“file://f:\t630_freertos\cypress\cypress_code\CyUSB3_USB_Suite_Source\CyUSB3_USB_Suite_Source\CyAPI_Library_Source\CyAPI\application\cpp\streamer\x86\Debug\BuildLog.htm”1>------ 已启动全部重新生成: 项目: Streamer, 配置: Debug Win32 ------
2023-12-25 17:28:29 891
原创 ubuntu20.04共享文件夹—— /mnt/hgfs里没有共享文件夹
1. 重新安装vmware tools. 在菜单中选择虚拟机--》重新安装VMware tools...安装过程中,一路yes即可,遇到默认是no,均输入yes覆盖。虚拟机启用共享文件夹后,/mnt/hgfs下面为空,使用。保存退出后,reboot重启ubuntu.查看设置的共享文件夹名字也是为空。
2023-08-18 12:03:11 2418
原创 如何将虚拟机ubuntu设置网路连接为桥接模式
当将虚拟机的网络适配器设置为NAT模式时,一切正常,可以ping通所有ip, 但是当设置为桥接模式时,ping命令会提示ubuntu connect: Network is unreachable。下图种,VMnet0设置为桥接模式,选择已桥接至步骤1中的网络名字:Realtek PCIe GBE Family Controller.点击确定。如果上面框框中只有两个VMnet,可以手动添加一个,VMnet8是虚拟机的NAT模式,VMnet1是仅主机模式,VMnet0设为桥接模式。
2023-02-24 09:46:59 3598 2
原创 ubuntu下ifconfig找不到命令,packege ‘net-tools‘ has no installation candidate
用sudo apt install net-tools也提示错误:Package 'net-tools' has no installation candidate.再次执行sudo apt-get install net-tools就可以了。原因:系统缺少安装相关软件的包,需要更新软件源。
2023-02-23 20:03:56 3509
原创 keil配置After Bulid Run #1 Run #2
虽然做嵌入式开发这么多年,但是没有关注过keil options选项卡中配置After Build/Rebuild Run #1 Run #2是怎么配置的,今天就来记录一下。首先,下图中Run #1中的cmd是keil自带的,fromelf --bin --output=$L..\@L.bin #L先看一下命令解释:$L:表示生成的链接文件的路径,一般是工程路径下的\objects\@L: 表示生成的链接文件的文件名(包含路径),但不包含文件扩展名#L:表示生成的链接文件的完整路径名及文件名.. :表
2022-07-06 11:13:00 3511
原创 Winusb WinUsb_SetPipePolicy函数的使用
在项目过程中用 WinUsb_ReadPipe函数异步读取usb device数据;用WinUsb_GetOverlappedResult()函数获取读取的结果长度;测试demo的数据长度是从1056byte 按8byte 步长往上涨的, 当跑到2MB+1032byte的时候,上位机就会少收取8字节就结束了,而少收的这8字节就进入到了下一次请求的结果中;用usb分析仪抓包下位机发送的数据并没有错误;遇到问题不会就是百度啊,这是万能的解决方法,遇到这一篇帖子基于WinUSB的异步方式bulk传输的稳
2022-03-17 14:58:02 1293
原创 linux vim编辑退出保存不了错误:E37: No write since last change (add ! to override)
使用vi /etc/vim/vimrc进入vim编辑器,进行修改后保存不了,提示E37: No write since last change (add ! to override),是因为没有权限;需要在打开vim编辑器时,使用sudo来打开,sudo临时提供管理员权限,当执行某种操作系统提示诸如“operation not permitted”等权限不足信息时,可以在命令前面加上sudo来解决权限不足问题。使用sudo后,再次修改vim就可以正常退出了。按回车,退出vim编.
2021-10-12 17:03:17 8251
原创 usb xhci babble error问题解决
问题现象:xhci的板子通过USB接iphone设备,进行数据OUT和IN,有一些芯片对于OUT,IN都能正常,有一些芯片对于OUT正常,对于IN总是出现babble error. 有时还不能进入事件中断。整体来说就是数据OUT没问题,数据IN对于一些芯片正常,一些芯片不正常,还有一个特殊的芯片是快速开关电源就会正常。查看xhci对于babble error的描述如下:意思就是有三种情况下会产生babble error。1:当device 发送的数据 > TD transfer size时
2021-09-07 09:48:58 2459
原创 KEIL工程boot跳转失败,死在rt_system_scheduler_start()问题的解决
遇到的问题:app工程是基于RTT的工程,boot跳转到APP时,每次执行到rt_system_scheduler_start()这个函数后就复位,进入不了main函数,debug跟踪调试进入到rt_system_scheduler_start()
2021-06-08 15:24:46 1721 1
原创 keil怎么设置生成.bin文件
打开keil的魔术棒,按照下面图设置一下就可以了:fromelf.exe --bin -o "$L@L.bin" "$L@L.axf"
2021-06-01 11:31:26 190
原创 进制转换小函数实现,十进制转16进制,char转bcd码等
#include <stdint.h>#include "convert.h"unsigned bcd2bin(unsigned char val)//11 : 0x11{ return (val & 0x0f) + (val >> 4) * 10;}unsigned char bin2bcd(unsigned char val)//0x11 :11/10*16+1 = 17{ if(val==0) return 0; ...
2021-05-27 14:40:15 321
原创 keil 定位hardfault
首先,在程序中我设置了一个hardfault:然后运行程序程序复位,通过log打印可以看到通用寄存器的值:我们主要看lr的值,然后debug调试程序,打开keil的Disassembly窗口,在View菜单中,拖动鼠标找到0x800d7b1这个位置(大概位置就可以)出现hardfault的地方就在lr地址后面的地址出的代码:我们双击D7B2这个地址,代码跳转到这个函数中,仔细检查这个函数没有问题,推测可能是调用此函数的地方出现了问题:可以看到第一张图中我们设置的ha.
2021-05-18 15:26:11 965
原创 HAL_PWR_DisableBkUpAccess();影响RTC定时唤醒
设置完RTC定时唤醒后,如果调用了HAL_PWR_DisableBkUpAccess();这个函数会导致RTC无法唤醒;void rtc_wkup_set_time(uint16_t ms){ __HAL_RCC_PWR_CLK_ENABLE(); HAL_PWR_EnableBkUpAccess();//设置RTC唤醒前需要先执行备份区使能,并且保证备份区不会使能,否则低功耗后唤醒不了 HAL_RTCEx_DeactivateWakeUpTimer(&hrtc)...
2021-04-30 15:58:06 820 2
原创 strcmp不起作用的问题解决
最近在调试一个项目,项目中用到了strcmp;但是strcmp在L431上用着起作用,在L451上用着竟然不起作用,同样的代码;过程如下:char HeadStr[6];//全局变量void n_recv_gnss_data_process(char ch){ if(ch == '$') { BeginFlag = 1;//开始标志 } if(BeginFlag >= 1) { BeginFlag++;...
2021-04-27 10:49:11 1264
原创 对于MCU看门狗IIWDG WWDG喂狗时间的配置参考
对于MCU看门狗IIWDG WWDG喂狗时间的配置参考可以参考MCU的datasheet;在每个MCU的datasheet中都有这样的表格:6.3.25 Timer characteristicsF091的:可以封装接口进行看门狗的配置,参数传入ms时长:以091为例代码实现如下(看门狗是40KHz):/** * @brief config 内部独立看门狗. * @param ms:看门狗时间长度 * @retval None */uint8_t .
2021-04-21 11:14:49 985
原创 w25qxx SPI读取数据出来为全FF
调试L451的spiflash时读取w25qxx的数据,写入后再进入读取,读取出来是全FF,最后找到原因是: hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH;配制成 hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;的原因,改成HIGH后就正常了。void MX_SPI2_Init(void){ hspi2.Instance = SPI2; hspi2.Init.Mode = SPI_MODE_MASTER...
2021-04-20 11:09:02 8803 4
原创 实现printf函数的方法
void n_kprintf(const char *fmt, ...){ va_list va; char tx_buf[256]={0}; uint16_t len; va_start(va, fmt); len = vsnprintf(tx_buf, 256, fmt, va); va_end(va); uart_send_data(UART_3,(uint8_t*)tx_buf,len);//自己实现的uart DMA发送函数,...
2021-04-20 09:49:43 217
原创 MCP2515在8M晶振控制器下配置1M波特率的配置
MCP2515在8M晶振控制器下配置1M波特率的配置:CFG1,CFG2,CFG3的配置值为:0x00,0x80,0x00;虽然这样配置可以得出1M波特率来,但是可能会不稳定,因为:
2021-04-20 09:15:36 1956
原创 HAL库的HAL_GPIO_ReadPin()使用总结
HAL库readpin的函数使用起来有以下总结:当一个pin脚设置成OUTPUT的时候,那么使用HAL_GPIO_ReadPin()函数能不嫩读取出这个pin脚的值呢???很多人都认为HAL_GPIO_ReadPin()只是用来读取配置为INPUT模式的pin脚的,其实它也可以读取配置为OUTPUT的pin脚状态;但是,这里加个但是,当pin配置output时,想要读取pin的状态时,对于推挽PP和开漏OD模式是有区别的;当配置为GPIO_MODE_OUTPUT_PP时,使用HA...
2021-04-08 10:07:06 20281
原创 lis3dh低功耗调试笔记
最近在调试整机的低功耗,发现在单片机进入低功耗后,整体功耗在400多uA, 不带加速度计(我用的是SPI模式)的硬件版本低功耗为100uA. 两个硬件版本除了加速度计的区别,其他硬件电路都相同;于是确定是LIS3DH的低功耗没调试好,查看LIS3DH的数据手册,发现如下的地方:即pin7引脚内部有个上拉电阻,另外找到数据手册上的table13的下面描述可以将此上拉电阻配置为disable;果真,加上这个配置后,低功耗电流降低了140A左右;功耗还是在300多uA,和100uA相差甚远;根据数据手
2021-04-06 16:12:06 1203 2
原创 在线小工具分享
1. 时间戳转换工具:https://tool.lu/timestamp/2. hmacMd5 md5 等工具(在线HMAC算法):http://www.metools.info/code/c25.html3. 异或检验计算:http://www.ip33.com/bcc.html4.基站定位查询:api.cellocation.com:81/cell.html5. hmac-md5计算方法c语言实现:https://blog.csdn.net/a823837282/article/deta
2021-04-02 15:40:59 725
原创 gpio模拟uart 发送
用GPIO模拟UART输出一个字节,波特率9600,所以周期约为104us。这就需要用的精确的usdelay延时函数;延时函数可以用Cortex-M内核中的DWT计数器。另外还需要将GPIO配置成output模式;延时函数实现如下:delay.h//延时实现#define DWT_CR *(__IO uint32_t *)0xE0001000#define DWT_CYCCNT *(__IO uint32_t *)0xE0001004#define DEM_.
2021-04-01 14:43:39 1237
原创 STM32L431 MCU温度计算
找到L431参考手册上的MCU温度计算公式:在L431的datasheet上找到下面的地方:通过上面两张图,可以知道mcu温度计算公式,可公式中用到的值,注意这里的校准值是在3.0V下校准的,如果你的单片机是用的3.3V供电,就需要转换一下系数3.3/3.0;MCU温度计算公式:代码实现如下:#define TS_CAL1 ((uint16_t*)((uint32_t)0x1FFF75A8)) //TS ADC raw data acquired at a tempera..
2021-03-29 10:29:49 1260
原创 can学习总结,关于波特率配置,采样点设置
CAN采样点的选择:当波特率>800k , 75%; >500K, 80%; <=500k,87.5%...
2021-03-11 13:29:45 3090 1
原创 L431 keil debug 进入不了main函数
通过cubemx5.5.0生成stm32L431芯片的KEIL工程,但是在调试的时候发现进入不了main函数;尝试过很多方法,都不行,程序能下载进去,jlink也能连接上,就是无法进入main函数;debug调试看着汇编窗口也在跑;用镊子短接了一下复位引脚还是不行;最后把jlink拔下来,重新开关了下电源竟然程序跑起来了。猜测原因:之前一直在芯片的引导区跑,一直没进入程序运行区,也就是可能是reset复位的问题导致的;这次运行起来后,每次debug就都能进入main函数了。有可能..
2021-03-10 15:57:12 1141
原创 MCP2515调试笔记----初始化注意事项
在调试基于F103单片机的MCP2515时,怎么调试都不正常,用的还是以前调试过的代码,隔了一段时间后再重新运行就不行了;于是单步运行调试,没想到,单步运行调试竟然成功了;于是想到是延时的问题,在初始化那里的reset函数里加了个延时,再下载进去板子里果然就正常了。void mcp2515_reset(void){ static uint8_t status; uint8_t cmd = MCP2515_CMD_RESET; mcp2515_cs_enable();//置M...
2021-01-20 14:08:36 2928
原创 git GUI版本回滚步骤
步骤:首先本地切换到要回退的那个分支上,然后按照下面步骤执行: 1 日志里选择版本 Repository -> Visualize master's history 2 选择要回到的版本号 reset master branch to here 3 完成回滚修改文件 hard4. Remote -->Push.(记住这个分支一定是不受保护的分支,否则push不成功),选择Force qverwrite-->push.完成。一下是图片展示:...
2020-12-29 20:13:41 3276
原创 GD32E230C8T6 定时器使用
定时器2的配置如下:定时时间是1ms,/** \brief configure the TIMER peripheral \param[in] none \param[out] none \retval none */void timer_config(void){ /* TIMER2 configuration: generate PWM signals with different duty cycles: TIM...
2020-12-29 11:06:45 3799
原创 gpio模拟串口uart接收数据(HAL库)
GPIO模拟uart的原理就是根据所需要的uart的波特率,计算出每个bit所用的时间,在此时间段内去读取gpio的输入,然后将读取的8bit拼接起来即可,当然这期间要检测起始位和结束位。uart的起始位是下降沿,结束位是上升沿。为了检测准确,我们读取每个bit的中位位置,所以定时时间是每个bit位所占用时间一半。9600波特率的uart模拟,每个bit位的时间是:1/9600 s = 104us的时间,那么半个bit位的定时时间就是104/2 = 52us。所以在检测到下降沿后,接着打开定时.
2020-12-08 14:16:45 1749
原创 keil包含了头文件仍然提示找不到定义 解决方案
简单粗暴,直接说明解决方法和问题原因:一看这个图片就明白原因了吧,哈哈。头文件名定义和里面的def名定义不一致。
2020-11-12 15:20:49 15665 10
原创 ACL16加密芯片硬件IIC调试
通过cubemx配置IIC:速率配置为100KHz,可以选择StandardMode,Fast Mode, Fast Mode Plus,这里选择StandardMode;选择RiseTime,FallTime都为100ns;7-bit地址模式,从机地址是0x53;GPIO设置为no-pull,开漏模式生成代码如下:OwnAddress1 = 166,16进制就是0xA6, 配置设置的0x53,0101 0011, 之所以代码里是0xA6,是因为cubemx自动将读写位填
2020-07-07 17:15:38 1203
原创 git分支合并冲突解决方法及步骤
下图是我的分支冲突图,在3点后,从develop分支分出一个release分支来,release分支更新了5次最后合并到了master分支,而没有往develop分支merge,所以导致master分支和develop分支版本不一样了,而由从3点出的develop分支拉出一个feature分支来,进行了两次更新,并合并到了develop分支上,此时再将develop分支merge到master的分支上就出现了版本冲突。开始说解决步骤:步骤1. 本地打开git GUI,本地checkout到dev
2020-07-02 11:21:28 6012
原创 lis3dh调试心得,读取正确的加速度值
最近在调试lis3dh加速度计,网上一搜能找到很多资料,但是描述正确的,感觉不是很多,所以这里我来总结一下,也是在网友博客的基础上将正确的地方集中整理一下。1. 首先说驱动,驱动网上流传的基本上就是一份,.h.c文件随便一搜就能下载到lis3dh的驱动,由于我的是公司电脑,文件是加密,就不上传驱动了,大家可以自行搜索其他的资源下载,驱动下载下来后,用户需要完成的就是底层SPI(这里我用的是SPI读写方法,IIC的没用过)的读写寄存器的函数,我把自己写的粘贴出来,大家参考一下,用的而是HAL函数,这里..
2020-06-29 15:05:51 11013 12
cppcheck_downcc.zip
2021-09-18
STM32 ST-LINK Utility.rar
2019-12-09
rt_thread移植.txt
2019-11-18
关于stm32l151c8t6在stop低功耗模式下通过RTC alarm唤醒的方法总结.pdf
2019-10-29
eclipse下基于stm32 使用printf函数重定向的使用说明.pdf
2019-10-29
stm32l151c8t6-A单片机关于定时器的时钟配置和计算(定时1ms的配置).pdf
2019-10-29
111019_EclipseSourcerySTM32开发环境搭建.pdf
2019-09-20
VS2008打补丁工具
2018-04-11
Apache+php+mysql_zend组合套件V2.0
2017-03-14
VS2008实现windows自带的计算器功能
2015-12-21
开发了一个RNDIS协议的网卡,mac地址不能随便修改
2023-07-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人