随笔分类 -  arm

摘要:以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。图1 按键电路 于是去看一下GPIO的结构图:I/O引脚结构图 由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1. ... 阅读全文
posted @ 2013-05-01 18:48 重归混沌 阅读(13922) 评论(2) 推荐(2)
摘要:今天看<<例说stm32>>上的RTC时钟,发现他没有使能APB1的上BKP时钟,就能读出BKP寄存器里的内容.很是不解,又看了一遍发现APB总线上的时钟使能分为两种,一种是时接口时钟一种是外设时钟.又仔细观查了一下时钟树发现在APB外设时钟使能寄存器上表现为接口时钟的都已经有了自己的时钟,再经实验证明所有这种不需要在APB上使能就有自已时钟的外设(即在APBxENR的某一位上代表的是这个外设的接口时钟的外设)在不需要使能接口时钟的情况下就能读出这种外设的寄存器的内容! 阅读全文
posted @ 2012-07-17 15:37 重归混沌 阅读(699) 评论(0) 推荐(0)
摘要:今天看stm32的窗口看门狗,突然发现很不正常,于是做了各方面的实验得出以下结论,由于只是实验了得出的结论没有官方结论,所以如果有人有理论依据请告知我,非常感谢11.一旦使能窗口看门狗的时钟,SR寄存器的EWIF位就会被置12.一旦在定义的窗口范围外喂狗就会复位3.在没有使能窗口看门狗定时器的情况下(即CR寄存器的WDGA寄存器置1来使能看门狗),SR不能被软件清0结论:所以必须把窗口看门狗的清0,使能中断放在初始化的最后2句才能正常运行! 阅读全文
posted @ 2012-07-15 11:08 重归混沌 阅读(239) 评论(0) 推荐(0)
摘要:cortex-m3中的共享属性是用来多核处理器进行共享的一块区域! 阅读全文
posted @ 2011-11-12 21:25 重归混沌 阅读(191) 评论(0) 推荐(0)
摘要:在Cortex-M3中指令是3级流水线,出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值。但是在进入中断服务程序后,压入栈的地址是pc,而返回时也是用作pc,那么pc的值如果是当前指令加4的话就有可能返回后就漏掉一条指令。 但是事实上中断服务程序可以完美的返回。那么这中间就一定存在着某些诡异的地方。 下面来看一段测试代码: 我们可看出,pc总是指向下一条指令,那么书中的“出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值”的关键在于“读取”2字,如果我们使用指令(如mov)读了PC,那么返回给我们地址就是当前地址+4,如果是单片机自动... 阅读全文
posted @ 2011-11-10 21:04 重归混沌 阅读(329) 评论(0) 推荐(0)
摘要:在编译下面一段代码时:STACK_TOP EQU 0x20002000 AREA Reset,CODE,READONLY DCD 0x20002000 DCD Start ENTRY ; CODE16 Start ldr r2,=Test LDRD r0,r1,[r2,#4] LDRD r0,r1,[r2] LDRD r0,r1,[r2] ; movs r0,r0 ; NOP ; align 4 Test DCD 0x12345678 END我发现,如果加上NOP或align4,程序就不会跑飞,否则程序就跑飞了。经调试发现: 如果不加NOP或align 4的话产生... 阅读全文
posted @ 2011-11-05 11:32 重归混沌 阅读(1310) 评论(0) 推荐(0)
摘要:经测试证明,使用BL时,此指令做出如下操作LR=PC+T,T位是CPSR里的T位,标志着是否是thumb状态! 阅读全文
posted @ 2011-11-03 11:44 重归混沌 阅读(306) 评论(0) 推荐(0)