单片机开发
崔家寨大当家
这个作者很懒,什么都没留下…
展开
-
【怎么在KEIL中自定义STM32的栈顶地址】
STM32的启动文件中定义的栈和堆的大小,由于栈是向下生长的。所以我们一般希望将栈顶设置为RAM的最高有效地址。这样就可以最大限度保护栈不会溢出。但是STM32的启动文件居然不是这样的思路。那STM32的启动文件的分配思路是怎么样的呢。它其实是先确定用户使用RAM的情况,然后在未使用的RAM地址开始分配一段RAM区域来做为栈使用。也就是说它并不是将栈顶设置在RAM地址的最高分缘处。这样其实有大部分RAM被浪费掉,随着用户程序的复杂度加大,有可能会引启栈溢出的风险。现在我们来自定义栈顶地址,修改启动文原创 2022-04-27 10:05:39 · 3785 阅读 · 0 评论 -
记录一下STM32下载报错invalid rom table的解决
今天调试一个stm32板子和往常的习惯一样,会一部分一部分的焊接,今天调试发现下载程序时候报错:invalid rom table。终于在找到了网友的解决办法。200KHz下载成功的,马上尝试了,确实可以的,但是下载速度就慢了。对比以前的板子觉得不对啊。试了几个速度,500KHz也是可以的,只要上1MHz就不行了。这是怎么回事,难道这个板子以后要用500Hz速度下载。参考文章:STM32下载报错invalid rom table - 努力的人会幸运 - 博客园...原创 2022-04-12 16:56:39 · 1176 阅读 · 0 评论 -
记录一下网友讲的HID报告描述符
终于找到一个讲得通俗易懂的文章了。HID报告描述符格式讲得很明白。USB HID报告描述符教程 - 知乎 (zhihu.com)原创 2022-04-12 14:50:17 · 248 阅读 · 0 评论 -
ESP32-C3启动模式测试
工程/内核配置使用默认1.GPIO8=1,GPIO9=1 GPIO8上拉10K到3.3V,GPIO9上拉10K到3.3V,GPIO9=3.3V。 USB可正常下载,下载后可接收串口数据。 串口可正常下载,下载后进入监视模式可接收调试输出信息。2.GPIO8=1,GPIO9=0 GPIO8上拉10K到3.3V,GPIO9下接1K到GND,GPIO9=0.9V。 USB可正常下载,下载后进入监视模式,调试信息显示:waiting for download 串口可正...原创 2022-03-03 12:32:37 · 1447 阅读 · 0 评论 -
网友开源项目ESP32S3-蓝牙&USB键盘
网友分享了一个基于ESP32S3的BLE和USB键盘项目分享给大家hhuysqt/esp32s3-keyboard: USB/BLE keyboard driver based on ESP32S3-WROOM-1 (github.com)原创 2022-01-26 10:56:20 · 5164 阅读 · 1 评论 -
USB命令与设备描述符详解
最近发现有网友对USB命令讲解得非常通俗易懂,记录一下:博文:USB命令与设备描述符详解_追风星空_新浪博客 (sina.com.cn)原创 2022-01-25 11:40:44 · 300 阅读 · 0 评论 -
USB2.0规范-中文版免费下载
终于找到个免费的USB2.0规范文档,是网友自己翻译的。分享给大家。GitHub - FengJungle/USB_Protocol_CH: FengJungle整理的USB协议2.0中文版(持续更新)原创 2022-01-23 09:16:11 · 2056 阅读 · 0 评论 -
USB2.0低速和全速设备SETUP包格式
setup包的数据格式如下图所示:原创 2022-01-23 08:53:16 · 1157 阅读 · 0 评论 -
ESP32-C3 — ESP-IDF 编程指南 release-v4.3 文档
ESP32-C3 — ESP-IDF 编程指南 release-v4.3 文档请参考如下链接:引导加载程序(Bootloader) - ESP32-C3 - — ESP-IDF 编程指南 release-v4.3 文档原创 2022-01-11 16:15:49 · 344 阅读 · 0 评论 -
ESP32-IDF离线包已经包函了IDE-eclipse
esp-idf-tools-seup-offline-2.9.exe安装包已经集成了eclipse,所以相要构建esp32的eclipse开发环境就不再需要另行下载eclipse安装包了。离线安装包的下载地址在这篇博文中: (50条消息) 【ESP32 乐鑫 离线环境搭建】_sgd985437的博客-CSDN博客_esp32离线 如果自己到官网下载的话,很能可能下载会失败。可以先试试官网下载。...原创 2022-01-08 09:31:59 · 780 阅读 · 0 评论 -
The firmware of the connected J-Link does not support the following memory access: Read @0x02000004
Keil烧录报错:The firmware of the connected J-Link does not support the following memory access: Read @0x02000004 使用该文件替换Keil_v5/ARM/Segger安装目录下的文件可解决。解决办法请参考:Keil烧录程序的问题解决 - KrityCat - 博客园 (cnblogs.com)我用这篇博客中的文件夹替换了自己KEIL中的文件夹成功解决。...原创 2021-12-15 14:33:47 · 1420 阅读 · 0 评论 -
亚特力单片机AT32F415的ADC单次转换
AT32F415单片机例程/****************************************************************************************File name:Description: 将GPIO PC0作为AD输入口,PC0是ADC1的通道10****************************************************************************************///--原创 2021-11-01 10:04:56 · 1191 阅读 · 0 评论 -
记录一下GD32F103RB串口0重映射遇到的问题
参考资料: https://blog.csdn.net/yangkunhenry/article/details/92795388 当我的板子需要将UART0重映射到PB6,PB7时,按照参考例程加入GPIO重映射处理。但是发现串口发送中断可以进入。但是却没有波形。尝试了各种GPIO模式都不行。 最后还是在网上发现有高手也遇到了这个问题。总结一下应该是外设时钟使能顺序有讲究。要选打开AFIO时钟,然后再打开GPIO时钟,然后再重映射GPIO,然后再使能UART0时钟,最后再配置...原创 2021-08-30 10:30:38 · 2279 阅读 · 1 评论 -
记录一下AT24CXX多页读写的思路
1.读写数据少于1页时: 规律: 当数据左边界不落在整页起始地址时,可以通过计算数据的结束地址的页号是否大于起始地址的页号来判断是否跨页。如果 结束页号>起始页号则说明跨页。跨页时要写2页才能写完数据。 当起始地址在页边界时,则不可能跨页,只需要写1页就能把数据写完。2.读写数据大于等于1页时: 规律: a.先得到要写的整页数量: 数据结束地址取整(去掉不满整页...原创 2021-08-24 10:28:33 · 1207 阅读 · 0 评论 -
FreeRTOS V202104.00中断优先级控制
1. configKERNEL_INTERRUPT_PRIORITY 定义systick定时器的中断优先级,一般设置为最低2. configMAX_SYSCALL_INTERRUPT_PRIORITY 用户中断服务函数中如果想调用freeRTOS的API函数,则用户中断的优先级不能高于configMAX_SYSCALL_INTERRUPT_PRIORITY定义的优先级。3. configLIBRARY_KERNEL_INTERRUPT_PRIORITY 这个值是将configMAX...原创 2021-07-28 10:42:47 · 500 阅读 · 0 评论 -
GD32之RTC操作注意事项
由于GD32官方例程过于简单,在实现项目开发中如果套用官方例程往往不能满足应用中的需求。下面就RTC的操作总结了几条关键点。一、在操作RTC前要先将RTC和APB接口同步 调用函数:rtc_register_sync_wait() 由于对RTC的操作要通过APB接口,并且当系统复位或者从低功耗模式唤醒后APB接口和RTC还未同步上。所以在操作RTC寄存器前请先调用这个‘同步函数’。二、在写RTC寄存器前要进入配置模式 调用函数:rtc_...原创 2020-11-28 11:05:49 · 5840 阅读 · 1 评论 -
加入FreeRTOS后单片机无法唤醒的原因
一开始不使用系统时使用RTC闹铃中断唤醒GD32,测试没有问题。但是当使用了FreeRTOS的工程中实现类似的代码时,发现RTC闹铃中断不能把单片机唤醒。几经周折后发现,原来是为了在RTC闹铃中断发送一个消息,所以将RTC闹铃中断的待级调低了。解决办法: 将RTC的中断优先级设置成比FREERTOS内核中断优先级高。...原创 2020-11-26 17:00:43 · 764 阅读 · 0 评论 -
GD32F130单片机ADC例程-单次转换
ADC单次转换例程: #include "gd32f1x0.h"#include <stdio.h>#include "gd32f1x0_adc.h"#define BOARD_ADC_CHANNEL ADC_CHANNEL_6#define ADC_GPIO_PORT GPIOA#define ADC_GPIO_PIN GPIO_PIN_6uint16_t adc_value;/***...原创 2020-07-31 15:16:55 · 6595 阅读 · 4 评论 -
GD32输出PWM之高级定时器和通用定时器的区别
高级定时器要输出PWM一定要加以下代码:timer_primary_output_config(TIMER0, ENABLE);通用定时器不需要这个函数。引用:https://www.cnblogs.com/chulin/p/12803063.html原创 2020-07-29 20:09:30 · 3192 阅读 · 0 评论