
编程杂谈
kehui123
嵌入式驱动
展开
-
stm32h43+SDMMC/EMMC 驱动配置过程记录
1. 开发环境:MDK5硬件平台:STM32H743IITX2. 调试内容:STM32H743 + EMMC,EMMC型号:MTFCxGMVEA-4Mcubemx主要配置界面:文件系统配置:时钟配置按照上面的配置生成的代码基本是可以用起来的。下面是简单的测试程序:(测试程序是在我的项目工程里面节选出来的,仅供参考)/*---------------emmc测试------------------------------------...原创 2020-12-13 12:22:25 · 5676 阅读 · 5 评论 -
ucosii任务切换
OSCtxSw()和OSIntCtxSw() OSCtxSw()是任务优先级切换函数,它的作用是先将当前任务的CPU现场保存到该任务的堆栈中,然后获得最高优先级任务的堆栈指针,并从该堆栈中恢复此任务的CPU现场,使之继续执行,该函数就完成了一次任务切换。 OSIntCtxSw()是中断级的任务切换函数。由于中断可能会使更高优先级的任务进入就绪态,因此为了让更高优先级的任务能立即转载 2014-12-26 09:25:37 · 1766 阅读 · 0 评论 -
ad7606
AD7606的读取过程是首先要用mcu发一个convst信号给AD7606,然后AD7606转换完毕后,会发出一个busy信号通知单片机此时再启动spi去读取采样之后的值。值得注意的是在用串口读取的时候,MSB DB15是在CS的下降沿输出的,而DB14到DB0是在SCLK的上升沿输出的。这在datasheet的28页第二列页首那段有描述,如果您的SPI配置成SCLK的上升沿读取,DB15可能读取原创 2014-07-23 22:27:33 · 9259 阅读 · 4 评论 -
lm3s时钟配置
关于lm3s时钟控制,以9b96为例,系统在编程和上电过程中是用的精确内部振荡器(PIOSC),这个振荡器是一个内部时钟源,不需要任何外部的原件,在上电之后,如果想把时钟源改成主振荡器,则必须在软件复位之后修改,主振荡器有两种时钟源,一是单端时钟源接在OSC0端,另外一种是两脚的晶振串接接在OSC0和OSC1之间。设置朱振荡器的时候要注意PLL是否正在使用,如果原创 2012-04-22 09:39:05 · 1422 阅读 · 0 评论 -
MIPS寄存器约定
<br />对于在一个CPU上进行开发,掌握其工作的CPU的寄存器约定是非常重要的。 <br />MIPS体系结构提供了32个GPR(GENERAL PURPOSE REGISTER)。这32个寄存器的用法大致如下: <br />REGISTER NAME USAGE <br />$0 $zero 常量0(constant value 0) <br />$2-$3 $v0-$v1 函数调用返回转载 2010-08-25 20:37:00 · 1607 阅读 · 0 评论 -
EEPROM读写操作常见的陷阱
<br />在项目开发中经常使用到EEPROM,现在把自己开发中曾经遇到的陷阱和自己的解决方法列出。(1)现象:加密型遥控器的ID自动丢失和改变。 <br /> 原因:在更新EEPROM过程中,断开电源。 <br /> 解决方法:<br /> a.更改设计避免在写入EEPROM过程中断开电源;<br /> b.增加100uF的电容,断电后瞬间维持EEPROM供电正常至EEPROM写入完成。<br />(2)现象:保存在EEPROM里的配置信息自动被改变。 <b转载 2010-08-15 21:46:00 · 1533 阅读 · 0 评论 -
EEPROM读写操作常见的陷阱
<br />在项目开发中经常使用到EEPROM,现在把自己开发中曾经遇到的陷阱和自己的解决方法列出。(1)现象:加密型遥控器的ID自动丢失和改变。 <br /> 原因:在更新EEPROM过程中,断开电源。 <br /> 解决方法:<br /> a.更改设计避免在写入EEPROM过程中断开电源;<br /> b.增加100uF的电容,断电后瞬间维持EEPROM供电正常至EEPROM写入完成。<br />(2)现象:保存在EEPROM里的配置信息自动被改变。 <b转载 2010-08-15 21:45:00 · 2255 阅读 · 0 评论 -
EEPROM读写操作常见的陷阱
<br />在项目开发中经常使用到EEPROM,现在把自己开发中曾经遇到的陷阱和自己的解决方法列出。(1)现象:加密型遥控器的ID自动丢失和改变。 <br /> 原因:在更新EEPROM过程中,断开电源。 <br /> 解决方法:<br /> a.更改设计避免在写入EEPROM过程中断开电源;<br /> b.增加100uF的电容,断电后瞬间维持EEPROM供电正常至EEPROM写入完成。<br />(2)现象:保存在EEPROM里的配置信息自动被改变。 <b转载 2010-08-15 21:46:00 · 9456 阅读 · 0 评论 -
switch与ifelse的效率问题
switch与if..else 的执行的效率问题 今天读一前辈的程序,发现其在串口中断里面为了分析协议的报文类型,在中断函数里面使用if..else语句。因为报文类型在现在看来只有两种,以后有可能还会增加,不确定。 本人以为这样用有些不妥,为什么不用switch语句呢?猜想是不是因为效率方面的考虑呢,毕竟我们应该尽量是中断的处理代码更加简洁,时间效率更高才好。 所以本人就查找相关资料,资料显示sw原创 2010-02-08 13:04:00 · 95044 阅读 · 16 评论 -
c语言中volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中转载 2009-10-21 10:35:00 · 494 阅读 · 0 评论 -
嵌入式C语言的一些面试题
预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计转载 2009-10-21 09:19:00 · 881 阅读 · 0 评论 -
任务、进程和线程有何不同
任务、进程和线程有何不同三个词中,任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。 进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独原创 2009-10-17 08:40:00 · 992 阅读 · 0 评论