Cortex - M3 I/O硬件编程全解析
1. Cortex - M3 I/O硬件架构
传统桌面计算机访问内存和外设使用不同指令,内存引用指令无法访问I/O设备,I/O指令也不能引用内存。若要在C语言中访问I/O设备,需用汇编编写支持例程,再从C语言调用。
而Cortex - M3采用内存映射架构,为内存和I/O建立统一地址空间,可通过常规LDR或STR指令引用。在C语言中使用内存映射I/O访问I/O设备,就像用指针访问普通内存位置,只需用I/O设备地址初始化指针,再用解引用操作符间接访问设备。
2. 中断和异常
中断能显著提升实时系统响应时间。例如在家处理所得税时电话铃响,停下手中工作接电话,处理完后继续工作,虽完成所得税工作的额外时间极少,但朋友完成任务的时间可能大幅减少。
中断是异常的特殊情况,异常还可由内部错误触发,如除零、未定义指令或非法未对齐内存访问。异常发生时,处理器执行异常处理程序。中断服务例程(ISR)常用于指代中断的异常处理程序。
编写处理程序常需用汇编,即便处理器采用内存映射I/O。处理程序和常规C函数有本质区别,异常可随时发生,处理程序必须保存和恢复所有寄存器内容,包括程序状态寄存器,以便返回被中断代码。传统上,处理程序可用纯汇编、C和内联汇编混合编写,或用特殊的 interrupt 关键字定义常规C函数。Cortex - M3的硬件设计使处理程序可写成无参数的常规 void 函数。
3. 线程和处理模式
Cortex - M3处理器有两种运行模式:执行主程序或线程时处于线程模式;执行处
超级会员免费看
订阅专栏 解锁全文
1512

被折叠的 条评论
为什么被折叠?



