嵌入式实时系统设计中,经常碰到多个任务调用同一个函数的情况。如果此函数当初不幸被设计成不可重入函数的话,那么不同任务调用该函数时可能修改其他任务调用该函数的数据,从而导致不可预料的后果。 继续阅读“C之可重入函数 && 不可重入函数”
入门级音箱DIY功放基础
一、常见 Hi-Fi集成功放
现今市面上常见的 Hi-Fi 集成功放,主要是以下三家公司的产品:
1、美国国家半导体公司(National Semiconductor),已被TI收购,代表产品有:LM1875、LM1876、LM3876、LM3886、LM4766等。
2、荷兰飞利浦公司(Philips),代表产品是TDA15xx系列,比较著名的有TDA1514及TDA1521。
3、意法微电子(SGS),和法国Thomson半导体合并,现为意法半导体(STMicroelectronics),比较著名的是TDA20xx系列及DMOS管的TDA7294、TDA7295、TDA7296。
国家半导体以及意法半导体的产品音色中性偏暖,飞利浦公司的产品则较为明亮。 继续阅读“入门级音箱DIY功放基础”
正弦信号发生器
从结构上看,正弦波振荡电路就是一个没有输入信号的带选频网络的正反馈放大电路。分析RC串并联选频网络的特性,根据正弦波振荡电路的两个条件,即振幅平衡和相位平衡,来选择合适的放大电路指标,从而构成一个完整地振荡电路。 继续阅读“正弦信号发生器”
信号完整性小记 ~ 前言
1、什么是信号完整性及其根源
随着电路工作频率地不断提高,在电路设计过程中不得不去考虑“0”、“1”码流是否准确无误地传输到接收端,接收端是否能准确无误地判断出来。尽管传输信息是数字的,但是承载这些信息的电压或电流波形却是模拟的,噪声、损耗、供电的不稳定等多种因素都会使电压或电流波形发生畸变,如果畸变到一定程度,接收器就可能错误判断发送器输出的“0”、“1”码,这就是信号完整性问题。 继续阅读“信号完整性小记 ~ 前言”
(*(volatile unsigned int *))详解
在看内核代码时,时常出现(*(volatile unsigned int *))相关定义,把具体宏定义放入其中就是(*(volatile unsigned int *))(0x4e000000),看着好像是定义一指针,该指针指向的内容就是0x4e000000该寄存器的内容。 继续阅读“(*(volatile unsigned int *))详解”
古诗词之美
爬虫框架Scrapy之初体验
最近正在拜读由Ryan Mitchell编写,OReilly出版的Web Scraping with Python。初级爬虫利用urllib、urllib2库以及正则表达式即可完成,不过还有更为强大的工具——Scrapy。虽然文中寥寥数语,不过整个实际安装过程还是煞费苦心呐!!!! 继续阅读“爬虫框架Scrapy之初体验”
C之回调函数
软件模块之间总存在着一定的接口,从调用方式上,可将它们分为三类:同步调用、回调以及异步调用。
同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,即被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或者事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常在实际应用中使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者中最简单的,而回调又常常是异步调用的基础。 继续阅读“C之回调函数”
FAQs
记录生活、工作中碰到的各种问题及解决方式,俗话说“温故而知新,可以为师矣”。解决一系列问题的同时,也是一种成长,故将其进行记录,举一反三,以免重蹈覆辙,本文持续更新。 继续阅读“FAQs”