嵌入式软件
文章平均质量分 88
fulangsuowa
交流技术,共同进步
展开
-
队列 C语言实现
嵌入式软件中,受硬件内存所限,最好别采用动态分配和回收,对于某些数据结构,最好提前分配好内存,便于管理。自己实现一个队列的数据结构,用作备份。 /* 队列结构,队列大小XXX_QUEUE_SIZE和事件结构XXX_T根据需要自己定义 */typedef struct { u16 usFront; /* 队首 */ u16 usRe原创 2012-10-30 11:53:38 · 739 阅读 · 0 评论 -
内核的可剥夺性和函数的可重入
不可剥夺型内核:要求每个任务主动放弃cpu。各个任务彼此合作共享一个cpu,异步事件还是由中断服务来处理的。中断服务可使一个高优先级的任务由挂起变为就绪状态,但是中断服务后,使用权就回到了被中断了的那个任务,也就是回到了原来的任务了,直到该任务主动放弃cpu的使用权,此时高优先级的任务才能或得cpu使用权。其优点:1:响应中断快;2:几乎不需要使用信号量来保护共享数据,当前运行着的任务占用着c转载 2012-11-14 12:34:04 · 695 阅读 · 0 评论 -
几种经典的滤波算法
几种经典的滤波算法(转)几种经典的滤波算法(转)1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点:转载 2013-03-14 10:26:54 · 569 阅读 · 0 评论 -
求结构体某个变量的相对偏移量
/* 结构体某个变量的相对偏移量 */ #define GET_OFFSET_OF_M_IN_STRUCT(__STRUCT, __m) (size_t)&(((__STRUCT*)0)->__m)(__STRUCT*)0//表示将常量0强制转化为__STRUCT*型指针所指向的地址, 当然也可以是x,只是到最后还要减去这个x的值((__STRUCT*)0)->__m转载 2013-05-11 12:40:36 · 719 阅读 · 0 评论 -
SPI总线之CPOL CPHA(转)
【背景】最近在看关于Silicon Labs的C8051F347的某个驱动中,关于SPI部分初始化的代码,看到其对于SPI的设置为CPOL=1,CPHA=0,对于CPOL及CPHA的含义不了解,想要搞懂,这两个参数到底是什么意思,以及为何要这么设置。所以才去找了SPI的极性和相位的相关资料,整理如下。【SPI基础知识简介】设备与设备之间通过某种硬件接口通讯,目前转载 2013-12-20 11:09:33 · 4393 阅读 · 0 评论 -
stm32定时器的基本设置
定时器的基本设置 1、 TIM_TimeBaseStructure.TIM_Prescaler = 7199;//时钟预分频数 例如 :时钟频率=72/(时钟预分频+1) 2、TIM_TimeBaseStructure.TIM_Period = 9999; // 自动重装载寄存器周期的值(定时时间) 累计 0xFFFF个频率后产生个更新或者中断(也是说定转载 2014-05-21 16:50:18 · 1099 阅读 · 0 评论 -
机器周期,指令周期,时钟周期,节拍与晶振
机器周期,指令周期,时钟周期,节拍与晶振时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速转载 2014-09-17 12:20:20 · 1317 阅读 · 0 评论 -
stm32 stm8 I2C相关总结
一、I2C协议简介I2C是两线式串行总线,用于连接微控制器及其外围设备。两根信号线分别是:时钟信号线SCL和数据信号线SDA。二、I2C总线传输时序2.1 I2C传输协议的三种信号I2C在数据传输过程中有三种信号类型,分别是:起始信号、结束信号和应答信号。①起始信号:在时钟信号SCL为高电平时,数据线SDA由高电平跳变为低电平,开始传输数据;②结束信号:在时钟信号SCL为高电平时,数据线SDA由低...转载 2018-03-20 18:04:48 · 2239 阅读 · 1 评论