自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (3)
  • 收藏
  • 关注

原创 stm32f103zet6开篇学习

STM32f103zet6 开篇

2017-05-31 15:44:02 2508

转载 基于STM32原子战舰板内存管理源码详解

走到今天,已经开始涉及到计算机核心一点的东西了---内存管理。通过本实验的学习,能够较为深刻体会到“指针是c语言的灵魂”这句话的分量。自然对c语言的能力要求就高很多了。      最近有点乱,但是有关嵌入式系统的学习不曾怠慢过。本文是基于原子老师的c源码,自己的学习的心得,只是对源码作出自己的学习理解,同时也插补了一些涉及到的c语言知识。贴出本文不为别的,一来但愿能有有缘人看到本文,提出指

2017-10-09 20:54:57 2997

转载 C语言之栈和堆(Stack && Heap)的优缺点及其使用区别

一、前言     直到现在,我们已经知道了我们如何声明常量类型,例如int,double,等等,还有复杂的例如数组和结构体等。我们声明他们有各种语言的语法,例如Matlab,Python等等。在C语言中,把这些变量放在栈内存中。二、基础     1、栈          什么是栈,它是你的电脑内存的一个特别区域,它用来存储被每一个function(包括mian()方

2017-09-28 16:52:57 952

原创 ucosII,LED0LED1俩任务切换过程,最简单的例子说明。

//LED0任务void led0_task(void *pdata){ while(1){LED0=0;delay_ms(80);LED0=1;delay_ms(920);};}//LED1任务void led1_task(void *pdata){  while(1){LED1=0;delay_ms(300);LE

2017-09-20 20:02:45 1849

原创 STM32f103zet6,综合大实验。

1、存储部分STM32F103ZET6512KB 片内FLASH(相当于硬盘),64KB片内RAM(相当于内存) ,片内FLASH 支持在线编程(IAP).外部:SPI-FLASH,8MB(相当于硬盘)。FSMC-SRAM,1MB(相当于内存)。

2017-09-12 20:57:43 3054

原创 STM32串口协议

目前我总结了两种串口通信时用到的串口协议程序。均学习的原子哥的。一、定义某个字符为一次接收数据完成,如/n/r。二、定义两个字符接收时间间隔,如10ms。超过即为第二次接收。一、程序示意:二、程序示意、#include \"delay.h\"#include \"usart2.h\"#include \"stdarg.h\" #inclu

2017-09-12 16:53:14 2533

原创 printf 函数支持

printf 函数支持这段引入 printf 函数支持的代码在 usart.h 头文件的最上方,这段代码加入之后便可以通过 printf 函数向串口发送我们需要的内容,方便开发过程中查看代码执行情况以及一些变量值。这段代码不需要修改,引入到 usart.h 即可。这段代码为://加入以下代码,支持 printf 函数,而不需要选择 use MicroLIB#if 1#p

2017-08-29 21:24:37 863

转载 Zstack协议栈--系统时钟定时器

我使用的协议栈版本及例子信息:ZigBee2006\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SampleApp ……OOXX……~~~~个人觉得,在协议栈里面涉及到两类定时器:一类是硬件定时器,对应cc2430上的几个Timer。系统时钟定时器为硬件定时器另一类是软件定时器,通过osa

2017-08-28 15:28:15 1427

转载 STM32串口第一个字节丢失问题的分析过程

STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 0x02 0x03 0x04..接收端收到的数据为:0x02 0x03 0x04,第一个数据丢失。换成发送别的数值的数据,如0x06 0x0ff,则接收到0x0ff,0x06丢失。错误依旧。

2017-08-21 17:14:32 865

原创 FSMC+SRAM+IS62WV51216

最重要的SRAM读写函数中  ADDR    +1还是+2的问题,可以用下面的解释。当 Bank1 接的是 16 位宽度存储器的时候: HADDR[25:1]对应 FSMC[24:0]当 Bank1 接的是 8 位宽度存储器的时候: HADDR[25:0]对应 FSMC[25:0]。以上这是规定。不论外部接 8位/16 位宽设备, FSMC_A[0]永远

2017-08-17 17:43:59 1738

转载 键盘机制(转自天运科技)

Zstack的按键机制这一节我们看按键机制,后续会陆续看UART机制和绑定机制,通过这三大机制深入学习Zstack消息的传递机制,掌握Zstack开发流程。1、 了解TI 的EB板按键TI的EB板按键资源有一个独立按键和一个摇杆。独立按键连接到P0_1,摇杆四个方向串联电阻连接到P0_6,摇杆的确认按钮(中心按键)连接到P0_5,类似与独立按键。TI 的EB板按键部

2017-08-10 22:44:54 385

转载 串口透传(转自天运科技)

第十六讲 ZigBee串口透传       一、 串口透明传输工程说明               串口透明传输工程是在SampleApp工程基础之上进行修改而成,主要功能是完成简单的串口透明传输,功能要求:1、 设备上电后自动选择设备类型。第一个启动的设备为协调器,后续启动的为路由器。(所有设备中程序相同)2、 路由器的232串口接收到数据后将数据以单播的形式

2017-08-10 22:43:39 2744

转载 绑定机制(转自天运科技)

一、绑定(Binding)绑定是一种控制两个或者多个设备应用层之间信息流传递的机制。在ZigBee2006发布版本中,它被称为源绑定,所有的设备都可以执行绑定机制。绑定允许应用程序发送一个数据包而不需要知道目标设备的短地址(此时将目标设备的短地址设置为无效地址0xFFFE)。应用支持子层(APS)从它的绑定表中确定目标设备的短地址,然后将数据发送给目标应用或者目标组。如果在绑定表中

2017-08-10 22:43:06 564

转载 zigbee 协议栈 SamPle App工程(转自天运科技)第十五讲 SerialApp工程

工程概述  SerialApp工程是TI提供的一个使用串口的实例。该工程的可以完成串口透明传输,其总体数据流图如图X所示。    图X SerialApp工程数据流图        SerialApp工程为了数据准确无误的发送到目标设备采取了两个措施:双缓冲机制和应答机制。  源设备的串口回调函数中有两个缓冲otaBuf和otaBuf2  SerialApp工程

2017-08-10 22:41:37 994

转载 zigbee协议栈SAMPLE APP(转自天运科技)

Sample Application工程一、Sample Application工程概况描述      Sample Application是ZStack协议栈提供的一个非常简单的演示实例,实例中的每个设备都可以发送和接收两种信息:周期信息和闪烁信息。周期信息---------当设备加入该网络后,所有设备每隔 5S(加上一个随机数,毫秒mS为单位)发送一个周期信息,该信

2017-08-10 22:40:16 3016 1

转载 ZIGBEE 电源控制之中断唤醒

/*  此程序很简单,主要用到的是外部中断和电源管理实验目的:通过按键触发外部中断,使单片机跳出休眠状态,LED闪烁5次       主讲  王加辉*/#include#define LED1 P1_0/*定义端口*/#define LED2 P1_1void init_led()/*此函数初始化LED灯*/{  P1

2017-08-10 22:38:47 1886

转载 ZIGBEE AD 转换 片内温度学习总结

/*本程序讲解AD控制(片内温度计)主讲  王加辉*/#include#include\"stdio.h\"#define uchar  unsigned char#define uint   unsigned intvoid init_UART0(void)/*初始化串口*/{   P0SEL|=0X3C;/*这里我们是选择P0_2,P0_3,P0_4,P

2017-08-10 22:38:03 2431

转载 zigbee cc2530 AD 转换温度 学习总结

/*本程序讲解AD控制(片内温度计)主讲  王加辉*/#include#include"stdio.h"#define uchar  unsigned char#define uint   unsigned intvoid init_UART0(void)/*初始化串口*/{   P0SEL|=0X3C;/*这里我们是

2017-08-10 22:37:16 4707 1

转载 zstack 串口解读,几家之言汇总。(2)

最近在做一个智能家居的项目,用到了TI的CC2530芯片以及对应的zstack协议栈,其中串口通信部分使用的最多,下面就分享一下Z-Stack对串口封装的使用心得。Z-Stack中对串口操作的封装主要在hal_uart.h,hal_uart.c中, 支持DMA和ISR两种处理方式, 真正的实现则都封装在_hal_uart_dma.c 和_hal_uart_isr.c中,  但系

2017-08-10 20:49:26 544

转载 zstack 串口解读,几家之言汇总。(1)

协议栈中UART有两种模式:1、中断2、DMA对于这两种模式具体运用在哪一步,纠结了很久.通过UART配置结构:typedef struct{  uint8 *rxBuf;  uint8 rxHead;  uint8 rxTail;  uint8 rxMax;  uint8 rxCnt;  uint8 rxTick;  uint8 rxHigh;

2017-08-10 20:48:33 682

原创 串口深入学习

串口就是8位8位传送的。即一个字节。一定利用好控制寄存器。TXE RXNE等一个字节产生一个中断。(1)数据发送过程    当使能了发送使能位TE后,数据要发送出去,首先要将数据写进USART_DR寄存器(和51单片机SBUF一样,USART_DR寄存器实际包含了两个寄存器,给发送用的TDR和给接收用的RDR,在USART_DR寄存器下还有一个发送/接收移位寄存器,

2017-08-09 20:05:57 818

转载 电子罗盘,LSM303DLHC

1. 单片机端口配置初始化  以STM32F303程序为例 static void LSM303DLHC_LowLevel_Init(void){  GPIO_InitTypeDef GPIO_InitStructure;  EXTI_InitTypeDef EXTI_InitStructure;  I2C_InitTypeDef  I2C_InitStructure;  

2017-08-08 16:09:15 3256

转载 zigbee之UART DMA和ISR模式

z-stack里建议用DMA模式串口DMA驱动的流程!即直接存储模式在使用串口时,对于Rx,即从串口读取一定字符串的过程;系统在串口数据到来之前调用HalUARTPollDMA函数轮询串口中是否有数据。这里说一下,当UxDBUF中有数据时,直接利用DMA传输,一一将UxDBUF的数据发送到了rxBuf中了,而HalUARTPollDMA轮询时候只是检查rxBuf中时候有

2017-08-03 11:03:03 2822

原创 zigbee协议栈z-satack解读。

taskArr[]是任务名称的队列 SampleApp_ProcessEvent在其中。taskCnt是任务的个数taskID可看做任务的优先级。taskEvents分配了内存空间,为0.长度为任务的个数。先 osal_init_system();初始化任务、定时器、电源管理等。其中包括osalInitTasks();任务初始化。任务初始化其中包括各个层的初始化。应用层初始

2017-08-02 21:31:39 305

原创 STM32,一键下载。

下载方式需要以下步骤:Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoaderStep2:最后在BootLoader的帮助下,通过串口下载程序到Flash中Step3:程序下载完成后,又需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动一键下载就需要通过控制BOOT0和BOOT1.

2017-07-27 23:49:42 3471

原创 STM32用到的几种存储器

24c02是EEPROMW25Q64是FLASHIS62WV51216是SRAMFLASH:单片机运行的程序存储的地方。SRAM:存储单片机运行过程中产生的了临时数据。 EEPROM:视用户的需要而定,一般用来存储系统的一些参数,这些参数可能需要修改,也可能不会修改。

2017-07-27 19:47:12 2473

原创 ucos,综合范例,详解

本章我们在 UCOSII 里面创建 7 个任务:开始任务、 LED 任务、触摸屏任务、队列消息显示任务、信号量集任务、按键扫描任务和主任务,开始任务用于创建邮箱、消息队列、信号量集以及其他任务,之后挂起;触摸屏任务用于在屏幕上画图,测试 CPU 使用率;队列消息显示任务请求消息队列,在得到消息后显示收到的消息数据;信号量集任务用于测试信号量集,采用 OS_FLAG_WAIT_SET

2017-07-26 22:43:05 1241

原创 ucos,软件定时器。自己理解

n个定时器控制块组成一个分组。2^n个分组组成软件定时器。分组个数为2^n个,每个分组为:定时时间%2^n          的余数。

2017-07-26 11:21:12 877

原创 ucosII 关于事件控制块,信号量,邮箱,消息队列,自己的理解。

信号量能共享。邮箱是一对一。三者都需要用事件控制块来创建。 三者都叫:事件。

2017-07-25 10:46:37 1248

转载 uCOS-II中的任务切换-图解多种任务调度时机与问题——转自apollius@格子间

uCOS-II中的任务切换-图解多种任务调度时机与问题【@.1 任务调度时机】之前的一篇文章分析了具体的uCOS-II中的任务切换机制,是从函数调用的角度上分析的。这次我具体从整个程序运行的时间上来看,分析多种任务调度发生的时机。以下所有图片均可点击放大观察。所有图中红色箭头表示中断级的任务切换,蓝色箭头表示任务级的中断切换。1.仅有一个任务,这种情况最简单。假设时钟节

2017-07-20 16:59:25 386

原创 STM32.ADC原理

12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。●  12位分辨率

2017-07-18 20:36:17 3576

原创 项目电路设计

1、电路首先5-12V输入,用mp2359转换成5V。再用lm1117转换成3.3V。2.STM32用3.3V供电。3、3.3V供电能减小功率!

2017-07-17 20:48:38 671

原创 传声器,设计前置电路用。

灵敏度用于表示传声器的声-电转换效率。在自由声场中,向传声器施加一个声压为1ubar的声信号时,传声器的开路输出电压(mV)即为传声器的灵敏度。再一个标准声压的作用下,传声器的开路输出电压越高,传声器就越灵敏。电容式传声器由于有内装前置放大级,典型灵敏度为2MV/ubar.电动传声器的灵敏度为0.1mW/ubar,当1米距离讲话时,达到振膜的声压约为1ubar=0.1Pa,此时

2017-07-17 19:49:13 876

原创 us/osii

多任务与处理器的关系,调度。处理器中俩指针PC和SP。PC指向任务代码,SP指向任务堆栈。将多任务进行调度。就是实时多任务操作系统。完整代码包含:•任务代码(程序)•任务的私有堆栈(用以保护运行环境)•任务控制块(提供私有堆栈也是虚拟处理器的位置)任务的几种状态。任务控制块(TCB)程序在多任务中for(;;)无限循环。空

2017-06-28 10:59:38 663

原创 STM32,IIC,SPI,CAN,485,232

这几类通信均为串行通信协议。IIC协议,可以用普通IO口模拟,两根线,一个SDA 一个SCL。半双工。通过两根线的时序,实现输入输出。SPI:四根线,全双工,输入,输出,时钟,片选。CAN总线:CAN是一种 ISO 国际标准化的串行通信协议, 是 1986 年德国电气商博世公司开发出面向汽车开发出来的,此后,CAN通过 ISO11898 及 ISO11519 进

2017-06-19 10:32:54 977

原创 STM32,SPI原理

今天学习SPI

2017-06-15 13:36:07 297

原创 STM32,IIC总线。

IIC总线这块很难,确实研究了一段时间。基础知识、教程等就不写了,反正也是给自己看。其他都在手册里。总体上看需要几部分:1、选取端口设置成IIC总线,GPIO输出。并拉高。  预定义I2C_SCL    I2C_SDA      I2C_SDA_H    I2C_SDA_L  I2C_SCL_H  I2C_SCL_L等。2、编写函数,SDA输入输出,主要是配置GPIO模式。3、根据

2017-06-15 12:39:02 1439

原创 STM32、串口、一键下载

串口这个让我研究了两天。STM的串口是USART是可以同步也可以异步,一般用异步。可以看出 只有将串口拉低,才能进行传输。另外 串口传输是一位一位传的,可以通过中断函数判断。每发一位,中断一次。程序里对串口操作1、GPIO时钟使能,USART时钟使能2、串口IO模式,一个模拟输入,一个复用推挽输出。3、USARTinit: 96、n、8、1等设置

2017-06-09 13:44:05 2672

原创 STM32,PWM

pwm最重要的就是初始化设置,其中包含的库函数1、结构体声明,GPIO、定时器、时钟通道2、开启时钟:GPIO、定时器,复用3、GPIO初始化、定时器初始化、4、定时器重映射到管脚5、定时器的功能模式(PWM)初始化6、使能定时器预装载定时器7、使能定时器外设

2017-06-07 11:35:47 334

原创 STM32,定时器

TIME1,TIME8高级定时器TIME2-5 通用定时器TIME6,TIME7基本定时器。对通用定时器使用,TIM2 1、开启TIM2时钟2、初始化定时器参数3、定时器中断参数设置4、中断优先级设置5、中断使能6、中断处理函数

2017-06-06 16:02:03 261

Zstack中串口操作的深度解析

zigbee,zstack,串口。唯一超详细深入解析。看了就懂

2017-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除