随笔分类 -  单片机C语言

开发单片机
摘要:使用STM32CUBE 配置自动生成的工程,使用的V5.4.0版本采用以往的配置方法,但是ADC无法正常运行 在调换了DMA和ADC1的初始化顺序之后,可以正常运行。正确的初始化顺序应该是,先初始化DMA,再初始化ADC,如下图所示。STM32CUBE自动生成的代码有误。 阅读全文
posted @ 2020-04-28 16:41 杰克纬伯 阅读(1951) 评论(0) 推荐(0)
摘要:关于指针,很多C的书中会非常强调的说这是一个大的课题。初级的编程中很少用到,也能比较好的让程序跑起来。 但当你深入的了解的单片机的工作原理,或者在内存资源比较少的片子上,当你在一个函数中要调用另一个函数的时候,并且需要传入一个数组变量,不想去申明一个全局变量的时候 传址不传值就显的犹为重要。你只要把 阅读全文
posted @ 2017-08-21 09:37 杰克纬伯 阅读(249) 评论(0) 推荐(0)
摘要:在使用HAL库的时候发现同一串口的接收和发送如果同时进行的话会发生问题,因为 如果用调用下面的函数 进行接收串口数据的时候,有可能 也正在进行中,而这两个函数都会对串口资源上锁 导致中断接收函数 HAL_StatusTypeDef HAL_UART_Receive_IT 返回hal_busy; 没有 阅读全文
posted @ 2017-08-03 13:23 杰克纬伯 阅读(5078) 评论(0) 推荐(0)
摘要:在做一个IOT项目时,遇上这样的问题: 要发的通信数据都是以结构体来定义的, 当我去做如下这个运算的时候发现,总是比实际结构体所点的空间115个字节多一个字节。 这个是内存对齐方式所致 使用如下的方式解决这一问题 阅读全文
posted @ 2017-08-02 10:41 杰克纬伯 阅读(385) 评论(0) 推荐(0)
摘要:内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建, 阅读全文
posted @ 2017-07-24 09:29 杰克纬伯 阅读(210) 评论(0) 推荐(0)
摘要:/* 在这里就打印解析的内容 */ void Handle(char *str, int len) { char *p = (char *)malloc(len + 1); memcpy(p, str, len); p[len] = 0; printf("%s\r\n", p); free(p); } /* ... 阅读全文
posted @ 2017-03-13 16:30 杰克纬伯 阅读(3922) 评论(0) 推荐(0)
摘要:因为要用到I2C和流量传感器通信,也是第一次使用,直接使用stm32F1 HAL库来实现初始化,在STM32F10E评估板上直接和传感器通信,一次性成功通过。 当把调试好的流量计驱动程序往实际的板子上应用的时候发现会死等在某一处如下: 以上代码是HAL库中的 网上查阅是I2C的固有BUG,真的是这样 阅读全文
posted @ 2016-11-12 15:39 杰克纬伯 阅读(9254) 评论(0) 推荐(0)
摘要:基于HAL库 阅读全文
posted @ 2016-06-29 16:08 杰克纬伯 阅读(1258) 评论(0) 推荐(0)
摘要:__set_FAULTMASK(1); HAL_NVIC_SystemReset(); 阅读全文
posted @ 2016-06-29 16:06 杰克纬伯 阅读(1159) 评论(0) 推荐(0)
摘要:最近在做一个项目,想使用uSD卡来实现在应用编程,首先需要一些知识 我所使用的单片机是STM32F103ZE,内部flash,超始地址为0x8000000,大小为0x80000(0x80000/1024也就是512kByte)要实现IAP,那么我需要一个bootloader,什么是bootloade 阅读全文
posted @ 2016-06-28 15:33 杰克纬伯 阅读(2674) 评论(0) 推荐(1)
摘要:时钟源由STM32的RTC来实现 阅读全文
posted @ 2016-04-08 15:35 杰克纬伯 阅读(2808) 评论(0) 推荐(0)