![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机
没理想的程序员
做自己!!!!!
展开
-
UART、SPI和IIC详解与比较(超级实用的调试经验)
1、UART UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)UART使用的是异步串行通信UART是两线,一根发送一根接收,可以全双工通信,线数也比较少数据传送速率用波特...原创 2019-04-10 13:52:47 · 7596 阅读 · 2 评论 -
单片机flash不足,keil如下方式进行优化
单片机的flash不够的时候可以使用keil的优化等级进行优化;但是使用Opt进行优化的时候会遇到难以预料的错误,所以使用时要对一些变量进行标识,比如使用volatile关键字还有其他方式也能减少内存的使用比如添加如下Define...原创 2022-03-10 09:40:39 · 2124 阅读 · 0 评论 -
keil 修改RAM、ROM
原创 2022-03-10 09:30:19 · 2218 阅读 · 0 评论 -
STM32片上Flash内存映射、页面大小、寄存器映射
本文以STM32F103RBT6为例介绍了片上Flash(Embedded Flash)若干问题,包括Flash大小(内存映射)、块大小、页面大小、寄存器。二、块大小Flash先分块再分页,擦除是按块进行,这样的说法应该只是对外置Flash而言,对于片上Flash即可以按页擦除也可以整块擦除。三、页面大小STM32有4种Flash module organization,分别是:low-density devices(32KB,1KB/page)、medium-density devices转载 2020-10-21 10:14:45 · 672 阅读 · 0 评论 -
stm32 串口打印输出定向
1. 串口1输出重定向我们知道printf是打印函数,原理是根据传入的字符串参数格式化打印输出到stdout中。我们需要让printf打印到串口之中,只需要在usart.c文件中模仿printf写一个输出函数即可在添加头文件 /* USER CODE BEGIN 0 */ #include <stdarg.h> #include <string.h> #include <stdio.h> /* USER CODE END 0 */ 写输出函数 /*原创 2020-10-10 09:02:00 · 385 阅读 · 0 评论 -
esp8266 串口打印更改为uart1
UART_SetPrintPort(UART1);更改为uart1 串口打印输出。原创 2020-10-09 15:48:49 · 1044 阅读 · 2 评论 -
ESP8266 烧录bin文件 以及输出hello world
1、使用的是nodemcu开发版进行开发,示例代码使用的是smart_config的示例工程,如果编译能够成功,则会出现如下图:将user_init(void)中的代码屏蔽 只留下os_printf("hello world")一行代码;make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=4;...原创 2020-09-23 16:41:16 · 1635 阅读 · 0 评论 -
stm32 使用jlink 下载出现he firmware of the connected J-Link does not support the following memory access
当使用jlink 进行下载程序的时候,出现以下错误提示dll文件出现问题,将keil文件夹中的JLinkARM.dll进行替换。需要把你安装JLINK驱动下keil5安装目录下的JlinkARM.dll用jlink安装目录下的JlinkARM.dll替换掉即可...原创 2020-08-21 19:10:44 · 740 阅读 · 0 评论 -
esp8266 driver_lib和包含头文件错误以及库函数找不到的问题
在SDK中编译MQTT例程,直接调用driver库中的函数UART_SetBaudrate(0,9600);如下图所示:编译时提示undefine的错误,如下图:解决办法:1.把driver_lib文件夹下的driver文件夹copy到mqtt_demo文件夹下面,把driver_lib文件夹下include里面文件copy到mqtt_demo文件夹下include里面,如下图所示:2.修改mqtt_demo文件夹下的makefile文件,如下图所示在SUBDIRS中添加dri.转载 2020-08-18 15:57:01 · 1181 阅读 · 0 评论 -
eclipse 找不到头文件
文件编译时找不到想要的头文件。先确定头文件的位置,然后在添加头文件路径~~点C++项目上右键,Properties -> C/C++ General -> Paths and Symbol -> Includes标签下Add原创 2020-08-14 16:13:34 · 3658 阅读 · 0 评论 -
FREEROST的heap heap分配
c语言中有两个概念经常一起被提及,堆和栈。栈一般是系统调用,用于函数调用中保存现场(局部变量等)。不难想象,函数调用中主函数往往是最先执行,调用其他函数,然后最后返回。而最深层次的函数(内部不调用其他任何函数的函数)往往是执行完就离开,所以使用栈管理函数调用最为合适。堆则一般是由程序员调用并管理。最直观的,一般malloc函数和free函数都是操作的这个空间,不过freeRTOS中一般则是使用freeRTOS中定义的函数(pvPortMalloc和vPortFree代替malloc和free函数)由原创 2020-07-30 18:55:23 · 350 阅读 · 0 评论 -
stm32 使用stm32 cubemx 库函数 串口接收数据的问题
使用stm32 cubemx 库函数 进行串口数据的接收,会有数据无法接收完整的问题,重复确定不是定时器定时时间的问题,最后确定为官方的库文件问题。。。。HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t pData, uint16_t Size){/ Check that a Rx process is not already ongoing */if (huart->RxState == HAL_原创 2020-07-09 16:35:02 · 461 阅读 · 0 评论 -
stm32 FREERTOS 操作系统 core_sysdep_malloc 分配失败的问题
stm32 freertos 操作系统遇到内存分配失败的问题 可以使用以下方式解决 buffer = sysdep->core_sysdep_malloc(buffer_len + 1, module_name); if (buffer == NULL) { return STATE_SYS_DEPEND_MALLOC_FAILED; }1、增加任务的栈空间osThreadDef(AlilinkTask, LinkTask, osPriorityHig...原创 2020-06-03 16:38:56 · 1044 阅读 · 0 评论