1. 先从常见的vPortFree()出现异常有那几种可能性?本次使用FREERTOS系统,从发送的源头开始找起 1staticvoid sendToQueue(constchar *data,uint16_t len){2//这是个临时变量,是否OK? 3 NB_Raw_Data *send = NULL;4// send=(NB_Raw_Data *) malloc(sizeof(NB_Raw_Data));5//分配的空间是512+2个字节 6 send=(NB_Raw_Data *) pvPortMalloc(sizeof(NB_Raw_Data));7if(!send){8return ;9 }
10 send->len=len;
11if(len > 514...
文章目录
用STM32玩SR04(测距、串口显示、OLED显示)超声波模块使用SR04初始化SR04使用串口打印数据SR04使用OLED来传输数据,并显示在OLED上用STM32玩SR04(测距、串口显示、OLED显示)
开发板:STM32F103ZET6(正点原子F103核心板) 硬件:HC-SR04,随便就能买 软件:Keil MDK5.29
Gitee项目已发布,需要源码请自助下载 STM32F103ZET6:地址(gitee)
这次玩的是HC-SR04,一种超声波测距模块,便宜又好用,长着两个不知道像什么的圆...
在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里。以供自己查阅,以及方便其他人。TC ====TXE顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理的方式,从队列以及FIFO方面写起。 SECTION 11234567891011121314151617181920212223242526272829303132333435/*调试STM32串口过程中发现一个奇怪的问题,初始化串口1口,使能串口发送完成中断后,立刻就进入了发送完成中断。仔细的查阅...
我使用库函数建的工程(非Keil自带库),为了实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信,发现使用库函数建的工程程序不能通过,读出来的数据和写的数据不一致,这样就产生了问题,于是尝试了keil自带库进行实验,结果成功了(当时有点小激动)。大家有谁知道是什么原因,希望可以分享出来哈。
实验目的:为实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信
(1)这是...
一个定时器多个通道 不同PWM频率
//void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)//{// uint32_t channel = htim->Channel;// // /* 获取当前计数 */// uint32_t count = __HAL_TIM_GET_COUNTER(htim);// // switch(channel)// {// case HAL_TIM_ACTIVE_CHANNEL_1:// /* 设置比较数值 */// __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, count + 1699);// break;// case HAL_TIM_A...
对于 STM32 讲(还是以Timer2例),外部中断通道位置 28(35 号优先级)是给外部设备 TIME2 的,但 TIME2本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢/下溢) 、输入捕获、输出匹配、DMA 申请等。所有TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢? 1.因为cortex_m3 内核对于每一个外部中断通道都有相应的控制...
/*********************************************************************/
RTC Real_Time_Clock
/*********************************************************************/
付费换来的笔记——看门狗详解
/*********************************************************************/ 一 背景(雾)
单片机的工作常常会收到外界电磁场的干扰,造成程序跑飞,陷入死循环 处于对单片机运行状态进行实时监测的考虑 便产生了专门用于检...
首先,malloc( )属于标准C语言函数,当然可以在单片机上使用,如STM32可以先在启动文件中设置heap的大小,再使用动态内存分配: Heap_Size EQU 0x00000200 \\也就是 512字节;但是一般单片机的内存都比较小,而且没有MMU,malloc 与free的使用容易造成内存碎片。而且可能因为空间不足而分配失败,从而导致系统崩溃,因此应该慎用,或者自己实现内存管理。以下摘自网络:在函数中使用malloc,如果是大的内存分配,...
时钟每跳1兆次,可以执行1.25兆条指令。指令周期=时钟周期*1.25,时钟周期是1/72mhz,故指令周期是(1.25/72mhz)约是0.0174us。
stm32 属于ARM CortexM3,多数指令是单周期的。
cortex-m3是三级流水线,同时执行3条指令,指令周期不定,分支指令也可能清空流水线,导致预先执行的指令失效。
ARM官方的数字是1.25MIPS/MHz,我的理解就是每个周期平均执行1.25条指令。
基于物联网的智能窗户Day3
DHT11温湿度模块HC_SR501红外人体感应模块结果展示ending
DHT11温湿度模块传感器包括一个高分子电阻式感湿度元件和一个NTC测温元件,并于一个高性能8位单片机相连,通过单总线与微处理器通信,只需要一根数据线。在相关例程基础上进行改动
//复位DHT11
void DHT11_Rst(void)
{ DHT11_IO_OUT(); //SET OUTPUTDHT11_DQ_OUT=0; //拉低DQdelay_ms(20); //拉低至少18msDHT11_DQ_OUT...
这个c8t6小车是我参加学校电赛的时候做的,目前具有红外寻迹,oled实时显示时间,蓝牙通信,在手机端上显示小车运动时间,还有加入了mpu6050模块和pid算法,实现了小车在跷跷板上的平衡。小车的照片和原理图都放在附件里了,大家可以看一看。
制作出来的实物图如下电路图
电机部分的程序,其他的在我附件里
**@par Copyright ©: 2010-2019, Shenzhen Yahboom Tech@file app_motor.c@author liusen@version V1.0...
接着上篇文章继续,STM32读写SPI FLASH
(1)更改GPIO配置 由于没有使用到硬件的SPI,那么将硬件初始化SPI部分进行删除,取消GPIO的复用功能,然后更改MOSI和SCLK引脚为输出模式,MISO更改为输入模式。 (2)改写uint8_t SPI1_SendByte(uint8_t byte)函数
void w25qxx_init(void)
{/*!< Enable GPIO clocks,使能GPIOB硬件时钟 */RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB, ENABLE);//端口配置 PB3 PB5GPIO_InitStructure.GPIO_P...
STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。出现问题时排查的方法:1、添加软件断点,一旦在调试过程中出现Hard Fault 则会停在__breakpoint(0)处。void HardFault_Handler(void)
{ if (CoreDebug->DHCSR & 1){ //check C_DEBUGEN == 1 -> Debugger Connected __breakpoint(0); // halt program ex...
GP2Y1010AU0F传感器接线方式如下:使用PA0接收模拟信号,PB1发送脉冲信号。代码如下:GP2Y.c#include "GP2Y.h"
#include "system.h"u16 AD_PM;
void GP2Yinit(void)
{
//定义变量
ADC_InitTypeDef A_InitStructure;
GPIO_InitTypeDef G_InitStructure; //PA0
GPIO_InitTypeDef Gpio_InitStructure;//PB1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC2通道时钟
...
刚开始学习的是51单片机,这次毕设老师让使用的是stm32的芯片,因为之前买过正点原子的mini开发板和st-link下载器,所以我尝试直接按照图片sw模式与最小系统板连接。结果没法下载,我也不知道为什么。 之后有一个同学和我说用之前我使用过的stc15的下载器也能下载stm32的程序。用的软件是mcuisp,之后我按照他的说法改变了我最小系统板上的BOOT设置,然后下载器和最小系统板的连线是 GND----GND,VCC---VCC,RXD---PA9,TXD---PA10...