单片机
文章平均质量分 53
GS-TECH
清华大学本科,微电子专业硕士。对嵌入式有独特的爱好!
展开
-
GD32F303移植RT-Thread
GD32F303移植RT-Thread步骤原创 2023-12-07 17:34:51 · 833 阅读 · 0 评论 -
GD32F303窗口看门狗在待机模式下运行
GD32F303待机模式下增加窗口看门狗原创 2023-09-19 14:06:23 · 603 阅读 · 0 评论 -
vscode 搭建STM32开发环境
1.1 vscode1.2 STM32CubeMX,这个不是必须的,我是为了方便生成STM32代码。原创 2023-08-09 14:36:19 · 1381 阅读 · 0 评论 -
FreeRTOS移植-GD32F303R
准备:(1)GD32F303R裸机工程(2)FreeRTOS的官方的源码包FreeRTOS源码包下载链接:官网:http://www.freertos.org/百度云:https://pan.baidu.com/s/1KWI8_-cap6H2cOLrj7Ro4g 提取码:u4pc下面是FreeRTOS源码包里面的内容提取关键源码(1)GD32F303R裸机工程下添加文件夹FreeRTOS文件夹(为了方便,我就创建者一个文件夹)(2)FreeRTOS\...原创 2022-02-18 11:48:14 · 4986 阅读 · 2 评论 -
Keil添加cJson和MQTT自带的库
我是用的芯片是MM32F031,开发环境是keil。添加keil自带的json mqtt库跟使用的哪款芯片没关系(1)安装cjson和mqtt的pack(2)功能调用原创 2020-11-05 20:18:42 · 2368 阅读 · 1 评论 -
MM32F031 M0内核 IAP
之前写过M3 M4内核单片机无线升级的文章,所以这里不多介绍IAP了。源码我会上传,名字叫:M0内核_IAP1.二级boot端代码,其中设置里的IROM和IRAM起始地址不需要特殊设置2.应用端代码3.然后分别烧录代码,就可以了...原创 2020-10-30 09:18:13 · 1325 阅读 · 0 评论 -
J-Flash烧录
之前写过一个J-Flash步骤,但是现在看,发现写的不是很详细,自己不满意。最近正好需要给工厂工人写一个JFlash烧录hex文件的步骤,所以我重新写一个详细的。我使用的芯片平台是MM32和GD32,不管什么芯片只要是cortex-M内核的都是一个流程。下面这个流程工厂工人都能看懂,如果做技术的你还看不懂,建议赶紧改行吧~资料包:链接:https://pan.baidu.com/s/1egrWmdEaOepPDaiS5xDR_Q 提取码:055j1.安装J-Flash应用程...原创 2020-10-27 19:08:56 · 23467 阅读 · 3 评论 -
GD32F130G8芯片创建一个Keil工程
之前一直使用别人的工程,后来想自己做个bootloader工程,然后就尝试自己新建一个,发现遇到各种问题。后来成功了,记录一下过程1.创建工程2.添加系统文件3.添加main.c 和 main函数原创 2020-10-27 11:18:11 · 1746 阅读 · 1 评论 -
STM8L051单片机开发问题记录
1.enableInterrupts(); 打开中断函数 这个函数放在串口中,我先打开串口然后调用这个函数,我再设置gpio外部中断功能,然后发现中断异常。最后将enableInterrupts(); 函数放在了最后,解决问题。2.关闭halt模式下看门狗复位功能(1)通过代码功能实现 FLASH_DeInit(); //恢复F...原创 2019-11-04 19:57:06 · 859 阅读 · 0 评论 -
转义字符"\"的使用技巧
1.在配置esp8266模块的时候,假如我的路由ssid与密码为:tsingmicro2.4G 密码tsingmicro.com,我需要使用AT指令集给esp8266模块发送AT+CWJAP="tsingmicro2.4G","tsingmicro.com",但是实际使用过程中,我使用printf(“AT+CWJAP="tsingmicro2.4G","tsingmicro.com"”),这...原创 2019-09-05 19:27:48 · 1917 阅读 · 0 评论 -
关于STM32堆栈方面知识点
最近弄json,发现经常的堆溢出,然后找问题。因为对STM32堆栈问题没有深刻认识,就花时间好好研究下了堆栈并且做了验证1.栈地址区间确定首先找到启动文件,我的启动文件在startup_stm32f40xx.s,一般的启动文件也都在startup_stm32fxxxx.s文件里__initial_sp 这个参数是栈顶地址,因为栈的增长是向下增长,所以这个参数我们可以理解为...原创 2019-08-29 20:43:27 · 1091 阅读 · 0 评论 -
STM32F407最小系统板 核心板
1.开发工具下载(1)keil:链接:https://pan.baidu.com/s/1c60VtSln3V7SpxIw2fbBQg 提取码:zi2s安装步骤(2)破解工具:强烈推荐大家使用正版keil。破解工具只能使用于个人学习,不得有商业用途!!反正我说了,我是没责任了~ 链接:链接:https://pan.baidu...原创 2019-04-22 21:05:15 · 7196 阅读 · 0 评论 -
STM32F407 主频时钟源配置成HSI
void system_user() //HSI 倍频函数{ RCC_DeInit(); //恢复系统默认时钟源 HSI 16M RCC_HSICmd(ENABLE); //使能HSI 16MHZ while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) ==RESET) ;...原创 2019-02-18 15:43:13 · 2654 阅读 · 0 评论 -
KEIL封装lib库文件
写单片机代码的时候,有些核心算法不想被开发者看到,但是还必须给开发者使用,这样的话可以使用keil自带的生成lib的功能。在网上看了很多历程,对于第一次使用的人来说,写的都不是很全面,最终综合了很多例子,才实现。下面我写一个详细点的。1.创建一个新的工程2.添加需要生成lab的.c 和 .h文件3.设置keil,编译生成lib编译后生成的lib文件...原创 2019-02-11 17:50:42 · 5243 阅读 · 0 评论 -
STM32F407 周期唤醒功能
1.下图是STM32F407的中文参考手册中,RTC介绍部分。因为我想实现单片机每秒自动唤醒自己一次,开始打算用闹钟中断,但是每次唤醒以后都要自己设置下次唤醒的时间,简单的方法是秒+1,但是要考虑是不是59秒的情况,比较麻烦。所以就选择唤醒中断的方式。2.时钟图分析:(1)通过寄存器RTC_CR WUCKSESEL[1:0] 设置唤醒时钟,为了方式我选择的是10X(1HZ)。 ...原创 2019-01-23 17:36:51 · 2820 阅读 · 2 评论 -
STM32 下载程序时,往flash固定位置写数据配置
1.就像参数定义时使用下面语句const unsigned char Flash_user_data[16] __attribute__((at(0X08080000))) ={ 0x01,0x02,0x03,0x04, 0x01,0x01,0x03,0x03, 0x04,0x04,0x04,0x04, ...原创 2019-01-29 14:04:40 · 2709 阅读 · 0 评论 -
STM32F4 使用结构体配置功能
1.IIC配置void IIC_Mode_Config(void){ I2C_InitTypeDef I2C_InitStructure; I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; //IIC模式 I2C_InitStructure.I2C_DutyCycle = I2C_DutyCy...原创 2019-02-02 16:54:57 · 758 阅读 · 0 评论 -
STM32L151RCT6添加标准库
1.首先下载标准库链接:https://pan.baidu.com/s/18RfyYJknrQOaz_NSDnJM8w2.使用keil创建一个普通的stm32l151RCT6工程(1)(2)下面选择的那俩不知道干啥的,先选着以后再分析(3)弄个main ,然后编译通过3.将库文件里的libraries拷贝到自己的工程中,并将库文件中stm32l1xx_conf....原创 2019-01-31 13:40:48 · 2047 阅读 · 4 评论 -
安卓OTG 安卓转串口 安卓手机与单片机通信 USB转串口
随着物联网发展,很多的安卓网关出现,如果安卓跟单片机结合那就非常完美了。目前安卓手机跟单片机通信都是通过蓝牙或者wifi的方式无线通信,好处是可以分开长距离通信,但是往往使用的时候安卓板子跟单片机都在一块的,这样子就会增加成本而且可靠性没有有线方式可靠。大多数安卓手机都是具有otg功能的,这个就是专门用于跟外设通信的,但是并不是随便就可以启用的,需要专门的模块配合引脚状态,触发安卓手机进入otg模...原创 2018-02-12 17:10:28 · 7539 阅读 · 8 评论 -
QN9021 通过代码修改BD_Address
1.打开这个宏定义 #define CFG_NVDS_WRITE2.解锁flashpower_on_flash(FLASH_WR);3.使用这个函数nvds_put(NVDS_TAG_BD_ADDRESS,NVDS_LEN_BD_ADDRESS,BD_Addr);4.锁住flashpower_off_flash(); 网上很多的历程都缺少2,4步骤,导致nvds_put函数执行一直失败。...原创 2018-02-13 17:30:13 · 978 阅读 · 0 评论 -
KEIL下载
KEIL目前有两个类型ARM版本 和 C51版本,如果开发的单片机是ARM核的话(例如:STM32)就下载KEIL FOR ARM版本。如果开发的单片机是51核的话(STC89c51,Atmel8)就下载KEIL FOR C51。下面是我在官网下载的安装包!绝对无毒,无广告,无任何插件!100%官网原装下载!1.KEIL FOR ARM 版本 链接: 点击打开链接2.LEIL FOR C51版本...原创 2018-03-05 11:20:25 · 4070 阅读 · 0 评论 -
单片机printf函数,串口重定向
搜索fputc函数,将fputc函数中的串口配置修改成所应用的串口,然后就可以使用printf函数打印了原创 2018-03-19 15:27:38 · 2325 阅读 · 0 评论 -
USB转I2C USB转I2C模块
学习单片机的过程中,会接触各种各样的通信协议,类似串口、iic、spi、can等。一般学习单片机的时候,第一个接触的就是串口。iic主要用于一些传感器、eeprom芯片等,spi的话主要就是控制一些液晶屏了。iic学习起来比较抽象,如果可以像串口那样使用就好了。 下面推荐一块usb转iic的模块,同时也支持usb转串口。所以针对学习单片机的同学来说是非常好的工具了:点击打开链接...原创 2018-06-12 16:50:18 · 14170 阅读 · 8 评论 -
STM32程序下载
STM32单片机系列很强大,种类很多,而且pin to pin功能让使用者切换其他型号的STM32变得很方便。STM32单片机的下载方法有很多,例如:串口下载,使用USB转串口就可以,后期上详细使用文档 Jlink下载,Jlink下载器中还分SWD、JTAG。批量生产的可以使用Jflash。这些功能只需要一个Jlink下载器即可,建议使用Jlink-V9,因为V8容易出现固件丢失问题。...原创 2018-10-23 09:33:02 · 1127 阅读 · 0 评论 -
USB转4路串口 USB转多路串口 串口神器
作为嵌入式工程师,串口是必要的。通常一个电脑的U口只能使用一个USB转串口模块,也就是只能查看一路串口数据。电脑的USB口一般都是2-3个,如果加上鼠标和键盘基本上就只能冗余出一个串口,这样如果想查看两路串口数据就比较麻烦了。 FT4232芯片具有一个USB口扩展四路串口的功能,也就是使用一个电脑USB口,电脑端会显示4个com口。而且四个COM口都是独立工作的不会出现数据串扰...原创 2018-10-26 16:54:22 · 11602 阅读 · 1 评论 -
NRF52832看门狗
1.sdk_config.h文件中,找到#WDT_ENABLED 然后将这个宏变成12.添加响应的配置函数:nrf_drv_wdt_channel_id m_channel_id;void wdt_event_handler(void){ bsp_board_leds_off(); //NOTE: The max amount of time we can spe...原创 2018-11-21 14:29:36 · 2322 阅读 · 0 评论 -
STM32F4系列移植FreeRTOS
采用的是野火的资料,我的板子是秉火(霸天虎系列)。资料里第124页开始讲的是移植步骤。非常的详细,我这就不写了,大家直接看文档的。链接在下面:资料:https://pan.baidu.com/s/1bSQQQTafi7h_MXyKtjXWTQ代码:https://pan.baidu.com/s/1pcJVqHKgDO12WFywuIAepw...原创 2019-01-11 16:23:27 · 824 阅读 · 0 评论 -
STM32F407产生随机数
STM32F407具有随机数发生器功能。代码实现:初始化 RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE); /* 使能RNG时钟 */ RNG_Cmd(ENABLE); /* 使能RNG外设 */应用while(RNG_GetFlagStatus(RNG_FLAG_DRDY)== RESET); //...原创 2019-01-12 12:57:02 · 2458 阅读 · 0 评论 -
STM32F407时钟树
买了一块野火的STM32F407板子,看到RTC一章时,发现主函数如下:说SystemInit();函数会默认把主频设置到72M,于是我就把SystemInit();函数都看了一遍。SystemInit();函数中没有发现,再看SetSysClock();最终倍频的参数是168M,并不是72MSTM32查看时钟频率函数:RCC_ClocksType...原创 2019-01-12 14:03:36 · 1542 阅读 · 0 评论 -
STM32 IAP(Bootloader)
想给STM32做串口升级功能,研究STM32程序执行步骤。1.STM32程序下载起始地址0x08000000,0x08000004这个地址是中断地址2.先自己设计一个bootloader程序 ,然后再设计一个应用程序3.给stm32 bootloader分配下载程序的空间,我用的是STM32F407ZGT6,具有1m的flash (1)bootloader:0x0800 0000 ...原创 2019-01-24 18:14:34 · 4893 阅读 · 5 评论 -
FreeRTOS下低功耗
最近学习STM32F407开发板,做freertos操作系统下低功耗,我使用的是停止模式,发现睡眠之后系统的滴答定时器中断会唤醒单片机。然后我就想把滴答定时器中断停止了,通过外部唤醒之后再恢复。我下载了 STM32F4xx中文参考手册,但是没有找到相关的嘀嗒定时器相关寄存器说明。最终在 ARM Cortex-M3与Cortex-M4权威指南 中找到了。权威指南下载链接:https://...原创 2019-01-15 10:12:00 · 1343 阅读 · 0 评论 -
STM32F407 DMA请求映射
原创 2019-01-15 15:58:26 · 4616 阅读 · 2 评论 -
STM32读取flash数据
uint32_t uwAddress = 0; //定义一个32位的参数int flashdata = *(__IO uint32_t*)uwAddress; //uwAddress 是地址,flashdata就是里面的数据。这个操作只能读,不能写flash ...原创 2019-01-15 20:05:13 · 2990 阅读 · 0 评论 -
单片机重启函数
单片机代码开发过程中,如果遇到某些传感器返回状态或者信号时,想让单片机重启,一般能想到的办法就是:断电 ,看门狗不位狗。其实一般单片机都是可以通过复位函数重启的:NVIC_SystemReset();一般的单片机都会封装这个函数我们直接调用即可。单片机复位函数:NVIC_SystemReset();// 复位单片机...原创 2018-02-12 16:20:18 · 3031 阅读 · 0 评论