微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
您好, 登录| 注册|

STM32的学习总结~~

  • 2013-07-19 19:21
  • dulai1985

    LV.0
  • 9601

    浏览

  • 29

    回复

  • 0

    获赞

  • 先占个位置,后续边学习边更新~~

    把自己所学的,所理解的东西发出来~~

    同是电子工程师,请一定不要吝啬你的赞!

    0人已赞

    编辑 举报

    LV.1

    4014599

    1447074

    50

    421479

    说说你的看法

  • LV.

    @

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    取消
    发送
  • 现在还没有回复呢,说说你的想法

    现在还没有回复呢,说说你的想法

    全部回复(29)

  • 斌520

    LV.1

    2013-07-19 21:53

    @

    总结的东西在哪呀,我也是来学习的!

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4014697

    1447074

    50

    127409

    取消
    发送
    2
  • dulai1985

    LV.1

    2013-07-20 14:56

    @斌520

    总结的东西在哪呀,我也是来学习的!

    (2)一个在core_m3.h中 
    /* SysTick Control / Status Register Definitions */ 定义COUNTFLAG在SysTick_CTRL寄存器中的位置 
    #define SysTick_CTRL_COUNTFLAG_Pos         16   
    #define SysTick_CTRL_COUNTFLAG_Msk    (1ul << SysTick_CTRL_COUNTFLAG_Pos) 定义CLKSOURCE在SysTick_CTRL寄存器中的位置 #define SysTick_CTRL_CLKSOURCE_Pos          2 
    #define SysTick_CTRL_CLKSOURCE_Msk    (1ul << SysTick_CTRL_CLKSOURCE_Pos)
    定义TICKINT在SysTick_CTRL寄存器中的位置  SysTick 倒数到 0 时会导致挂 
    起Systick处理器 
    #define SysTick_CTRL_TICKINT_Pos              1 
    #define SysTick_CTRL_TICKINT_Msk        (1ul << SysTick_CTRL_TICKINT_Pos) 定义ENABLE在SysTick_CTRL寄存器中的位置 使能Systick定时器 #define SysTick_CTRL_ENABLE_Pos              0 
    #define SysTick_CTRL_ENABLE_Msk        (1ul << SysTick_CTRL_ENABLE_Pos) /* SysTick Reload Register Definitions  SysTick_LOAD =0xFFFFFF */ #define 
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4015099

    1447074

    50

    421479

    取消
    发送
    3
  • dulai1985

    LV.1

    2013-07-20 15:24

    @dulai1985

    (2)一个在core_m3.h中 
    /* SysTick Control / Status Register Definitions */ 定义COUNTFLAG在SysTick_CTRL寄存器中的位置 
    #define SysTick_CTRL_COUNTFLAG_Pos         16   
    #define SysTick_CTRL_COUNTFLAG_Msk    (1ul << SysTick_CTRL_COUNTFLAG_Pos) 定义CLKSOURCE在SysTick_CTRL寄存器中的位置 #define SysTick_CTRL_CLKSOURCE_Pos          2 
    #define SysTick_CTRL_CLKSOURCE_Msk    (1ul << SysTick_CTRL_CLKSOURCE_Pos)
    定义TICKINT在SysTick_CTRL寄存器中的位置  SysTick 倒数到 0 时会导致挂 
    起Systick处理器 
    #define SysTick_CTRL_TICKINT_Pos              1 
    #define SysTick_CTRL_TICKINT_Msk        (1ul << SysTick_CTRL_TICKINT_Pos) 定义ENABLE在SysTick_CTRL寄存器中的位置 使能Systick定时器 #define SysTick_CTRL_ENABLE_Pos              0 
    #define SysTick_CTRL_ENABLE_Msk        (1ul << SysTick_CTRL_ENABLE_Pos) /* SysTick Reload Register Definitions  SysTick_LOAD =0xFFFFFF */ #define 

    在第3楼这段程序中

    你可以看到

    #define SysTick_CTRL_COUNTFLAG_Pos         16   
    #define SysTick_CTRL_COUNTFLAG_Msk    
    (1ul << SysTick_CTRL_COUNTFLAG_Pos) 

    很多人都会有疑问,这个1UL是什么意思?

    下面就是解释

    0UL 表示 无符号长整型 0

    1UL 表示 无符号长整型 1

    如果不写UL后缀,系统默认为:int, 即,有符号整数。



    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4015116

    1447074

    50

    421479

    取消
    发送
    4
  • dulai1985

    LV.1

    2013-07-20 15:25

    @dulai1985

    在第3楼这段程序中

    你可以看到

    #define SysTick_CTRL_COUNTFLAG_Pos         16   
    #define SysTick_CTRL_COUNTFLAG_Msk    
    (1ul << SysTick_CTRL_COUNTFLAG_Pos) 

    很多人都会有疑问,这个1UL是什么意思?

    下面就是解释

    0UL 表示 无符号长整型 0

    1UL 表示 无符号长整型 1

    如果不写UL后缀,系统默认为:int, 即,有符号整数。



    #define ABC (1ul << 16) 
    就是指 下面程序中  用ABC  代替  所有的   (1ul<<16)这个东西

    而(1ul<<16)  这个操作要做什么呢。  1ul可以是一个int 型的变量,让它 左移位 16 

    1ul<<16的结果是一个unsigned long int 数,这个数的大小是 
    1<<16


    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4015117

    1447074

    50

    421479

    取消
    发送
    5
  • dulai1985

    LV.1

    2013-07-20 15:25

    @dulai1985

    #define ABC (1ul << 16) 
    就是指 下面程序中  用ABC  代替  所有的   (1ul<<16)这个东西

    而(1ul<<16)  这个操作要做什么呢。  1ul可以是一个int 型的变量,让它 左移位 16 

    1ul<<16的结果是一个unsigned long int 数,这个数的大小是 
    1<<16


    1ul是1,类型为unsigned long,1左移63位,就可取unsigned long的最高位了
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4015118

    1447074

    50

    421479

    取消
    发送
    6
  • dulai1985

    LV.1

    2013-07-20 16:16

    @dulai1985

    1ul是1,类型为unsigned long,1左移63位,就可取unsigned long的最高位了

    uCOS里面的时间管理关键宏定义OS_TICKS_PER_SEC

    OS_TICKS_PER_SEC这个东西表示CPU一秒钟进行多少次时钟中断,也就决定了最小的延时间隔,比如OS_TICKS_PER_SEC设置成100,则表示1s里面会发生100次时钟中断,也就是10ms来一次中断,则最小的延时单位就是10ms。

    在LM3S平台下移植ucos,用systick来做时间管理的时钟源的话,初始化的时候是这样写的:

    SysTickPeriodSet((INT32U)(SysCtlClockGet() / OS_TICKS_PER_SEC) );

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4015143

    1447074

    50

    421479

    取消
    发送
    7
  • dulai1985

    LV.1

    2013-07-22 17:19

    @dulai1985

    uCOS里面的时间管理关键宏定义OS_TICKS_PER_SEC

    OS_TICKS_PER_SEC这个东西表示CPU一秒钟进行多少次时钟中断,也就决定了最小的延时间隔,比如OS_TICKS_PER_SEC设置成100,则表示1s里面会发生100次时钟中断,也就是10ms来一次中断,则最小的延时单位就是10ms。

    在LM3S平台下移植ucos,用systick来做时间管理的时钟源的话,初始化的时候是这样写的:

    SysTickPeriodSet((INT32U)(SysCtlClockGet() / OS_TICKS_PER_SEC) );

    STM32 BIT_BAND 位带别名区使用入门 
      支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设  //  区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自  
    //  己的“位带别名区”,位带别名区把每个比特膨胀成一个32 位的字  //  
    //  每个比特膨胀成一个32 位的字,就是把  1M  扩展为 32M ,  //  
    //  于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:  //   0X220000000 ,0X220000004,0X220000008,
    0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C  // 支持位带操作的两个内存区的范围是:  // 0x2000_0000‐0x200F_FFFF(SRAM 区中的  
    // 0x4000_0000‐0x400F_FFFF(片上外设区中的最低1MB)  /*    
    对SRAM 位带区的某个比特,记它所在字节地址为A,位序号  在别名区的地址为:  
    AliasAddr= 0x22000000 +((A‐0x20000000)*8+n)*4 =0x22000000+ (A‐0x20000000)*32 + n*4  
    对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0<=n<=7),则该比特  在别名区的地址为:  
    AliasAddr= 0x42000000+((A‐0x40000000)*8+n)*4 =0x42000000+ (A‐0x40000000)*32 + n*4  
    上式中,“*4”表示一个字为4 个字节,“*8”表示一个字节中有8 个比特。     */  
    // 把“位带地址+位序号”转换别名地址宏  
    #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))  //把该地址转换成一个指针  
    #define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))  // MEM_ADDR(BITBAND( (u32)&CRCValue,1)) = 0x1;     
    例如点亮LED    
    // 使用STM32库   
       GPIO_ResetBits(GPIOC, GPIO_Pin_4); //关LED5     GPIO_SetBits(GPIOC, GPIO_Pin_7);   //开LED2
    STM32 BIT_BAND 位带别名区使用入门 
      支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设  //  区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自  
    //  己的“位带别名区”,位带别名区把每个比特膨胀成一个32 位的字  //  
    //  每个比特膨胀成一个32 位的字,就是把  1M  扩展为 32M ,  //  
    //  于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:  //   0X220000000 ,0X220000004,0X220000008,
    0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C  // 支持位带操作的两个内存区的范围是:  // 0x2000_0000‐0x200F_FFFF(SRAM 区中的  
    // 0x4000_0000‐0x400F_FFFF(片上外设区中的最低1MB)  /*    
    对SRAM 位带区的某个比特,记它所在字节地址为A,位序号  在别名区的地址为:  
    AliasAddr= 0x22000000 +((A‐0x20000000)*8+n)*4 =0x22000000+ (A‐0x20000000)*32 + n*4  
    对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0<=n<=7),则该比特  在别名区的地址为:  
    AliasAddr= 0x42000000+((A‐0x40000000)*8+n)*4 =0x42000000+ (A‐0x40000000)*32 + n*4  
    上式中,“*4”表示一个字为4 个字节,“*8”表示一个字节中有8 个比特。     */  
    // 把“位带地址+位序号”转换别名地址宏  
    #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))  //把该地址转换成一个指针  
    #define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))  // MEM_ADDR(BITBAND( (u32)&CRCValue,1)) = 0x1;     
    例如点亮LED    
    // 使用STM32库   
       GPIO_ResetBits(GPIOC, GPIO_Pin_4); //关LED5     GPIO_SetBits(GPIOC, GPIO_Pin_7);   //开LED2
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4016268

    1447074

    50

    421479

    取消
    发送
    8
  • dulai1985

    LV.1

    2013-07-25 12:06

    @dulai1985

    STM32 BIT_BAND 位带别名区使用入门 
      支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设  //  区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自  
    //  己的“位带别名区”,位带别名区把每个比特膨胀成一个32 位的字  //  
    //  每个比特膨胀成一个32 位的字,就是把  1M  扩展为 32M ,  //  
    //  于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:  //   0X220000000 ,0X220000004,0X220000008,
    0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C  // 支持位带操作的两个内存区的范围是:  // 0x2000_0000‐0x200F_FFFF(SRAM 区中的  
    // 0x4000_0000‐0x400F_FFFF(片上外设区中的最低1MB)  /*    
    对SRAM 位带区的某个比特,记它所在字节地址为A,位序号  在别名区的地址为:  
    AliasAddr= 0x22000000 +((A‐0x20000000)*8+n)*4 =0x22000000+ (A‐0x20000000)*32 + n*4  
    对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0<=n<=7),则该比特  在别名区的地址为:  
    AliasAddr= 0x42000000+((A‐0x40000000)*8+n)*4 =0x42000000+ (A‐0x40000000)*32 + n*4  
    上式中,“*4”表示一个字为4 个字节,“*8”表示一个字节中有8 个比特。     */  
    // 把“位带地址+位序号”转换别名地址宏  
    #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))  //把该地址转换成一个指针  
    #define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))  // MEM_ADDR(BITBAND( (u32)&CRCValue,1)) = 0x1;     
    例如点亮LED    
    // 使用STM32库   
       GPIO_ResetBits(GPIOC, GPIO_Pin_4); //关LED5     GPIO_SetBits(GPIOC, GPIO_Pin_7);   //开LED2
    STM32 BIT_BAND 位带别名区使用入门 
      支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设  //  区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自  
    //  己的“位带别名区”,位带别名区把每个比特膨胀成一个32 位的字  //  
    //  每个比特膨胀成一个32 位的字,就是把  1M  扩展为 32M ,  //  
    //  于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:  //   0X220000000 ,0X220000004,0X220000008,
    0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C  // 支持位带操作的两个内存区的范围是:  // 0x2000_0000‐0x200F_FFFF(SRAM 区中的  
    // 0x4000_0000‐0x400F_FFFF(片上外设区中的最低1MB)  /*    
    对SRAM 位带区的某个比特,记它所在字节地址为A,位序号  在别名区的地址为:  
    AliasAddr= 0x22000000 +((A‐0x20000000)*8+n)*4 =0x22000000+ (A‐0x20000000)*32 + n*4  
    对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0<=n<=7),则该比特  在别名区的地址为:  
    AliasAddr= 0x42000000+((A‐0x40000000)*8+n)*4 =0x42000000+ (A‐0x40000000)*32 + n*4  
    上式中,“*4”表示一个字为4 个字节,“*8”表示一个字节中有8 个比特。     */  
    // 把“位带地址+位序号”转换别名地址宏  
    #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))  //把该地址转换成一个指针  
    #define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))  // MEM_ADDR(BITBAND( (u32)&CRCValue,1)) = 0x1;     
    例如点亮LED    
    // 使用STM32库   
       GPIO_ResetBits(GPIOC, GPIO_Pin_4); //关LED5     GPIO_SetBits(GPIOC, GPIO_Pin_7);   //开LED2
    AHB  随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC(System on Chip的缩写,称为系统级芯片,也有称片上系统)设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。 
      AMBA片上总线
      AMBA 2.0规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。
      基于AMBA的片上系统
      大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。 
      AHB简介
      AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位~128位总线宽度;支持字节、半字节和字的传输。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummy Slave)、虚拟主模块(dummy Master)所组成。
      APB简介
      APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。
      1)系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
      2)当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP 状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
      3)系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4018551

    1447074

    50

    421479

    取消
    发送
    9
  • dulai1985

    LV.1

    2013-07-25 12:27

    @dulai1985

    AHB  随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC(System on Chip的缩写,称为系统级芯片,也有称片上系统)设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。 
      AMBA片上总线
      AMBA 2.0规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。
      基于AMBA的片上系统
      大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。 
      AHB简介
      AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位~128位总线宽度;支持字节、半字节和字的传输。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummy Slave)、虚拟主模块(dummy Master)所组成。
      APB简介
      APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。
      1)系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
      2)当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP 状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
      3)系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4018566

    1447074

    50

    421479

    取消
    发送
    10
  • dulai1985

    LV.1

    2013-07-25 13:05

    @dulai1985

    AHB、APB总线 

     


    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4018599

    1447074

    50

    421479

    取消
    发送
    11
  • 现在还没有回复呢,说说你的想法

    1 2 3  
  • 回复

  • 收藏

  • 点赞

  • 举报有害信息

  • 已超出发布时间24小时,无法编辑与删除
    关于我们 联系方法 广告服务 会议服务 电子星球APP 网站地图 不良信息举报 热线:400-003-2006
    © 2002-2021 Netbroad(网博互动)公司版权所有 津ICP备 11006234号-2 联网备案号:12010402000747 增值电信业务经营许可证:津B2-20120058