做网站思路,做网站需要公司吗,网站的专题模板制作软件,第二章 营销型网站建设测验一、stm32中断偏移向量介绍
1.1 为什么要设置中断向量偏移 上图可以看出程序上电先进入0x08000000开始运行#xff0c;紧接着执行复位中断向量#xff0c;然后执行复位中断程序#xff0c;然后进入main函数。
如果想要app的中断正常运行#xff0c;那就必须手动设置中断向…一、stm32中断偏移向量介绍
1.1 为什么要设置中断向量偏移 上图可以看出程序上电先进入0x08000000开始运行紧接着执行复位中断向量然后执行复位中断程序然后进入main函数。
如果想要app的中断正常运行那就必须手动设置中断向量偏移地址。否则默认的地址是0x08000004而不是app的起始地址。
1.2 如何设置中断向量偏移 NVIC_VTOR_MASK是用来设置中断向量表的掩码。中断向量表是一个存储中断处理程序地址的表格用于处理不同的异常和中断。在STM32F407芯片中中断向量表占用空间为92*4368字节需要对齐到2的整次幂即512字节。因此可以将NVIC_VTOR_MASK设置为0xFFFFFE00即将低9位设置为0以确保中断向量表的起始地址是512的整数倍。 又因为这个所以将NVIC_VTOR_MASK设置为0x1FFFFE00。
设置掩码NVIC_VTOR_MASK的目的是为了确保中断向量表的起始地址满足对齐要求。对于不同的芯片中断向量表的大小和对齐要求可能不同因此需要根据具体情况进行设置。通过设置掩码NVIC_VTOR_MASK可以保证中断向量表的起始地址正确并且能够正确处理异常和中断。
1.3 dsp跳转app后为什么不需要设置中断偏移向量
这是一个用于初始化TMS32F28377D芯片中中断向量表的函数。逐行解释代码的功能
//---------------------------------------------------------------------------
// InitPieVectTable:
//---------------------------------------------------------------------------
// This function initializes the PIE vector table to a known state.
// This function must be executed after boot time.
void InitPieVectTable(void)
{ Uint16 i; Uint32 *Source (void *) PieVectTableInit; Uint32 *Dest (void *) PieVectTable;
// Do not write over first 3 32-bit locations (these locations are
// initialized by Boot ROM with boot variables) Source Source 3; Dest Dest 3; EALLOW; for(i 0; i 221; i) { *Dest *Source; } EDIS;
// Enable the PIE Vector Table PieCtrlRegs.PIECTRL.bit.ENPIE 1;
}
首先声明了两个指针类型变量 Source 和 Dest它们分别指向 PieVectTableInit 和 PieVectTable。
接着将 Source 和 Dest 各自增加 3 的偏移量。这是因为前三个32位位置是由引导程序Boot ROM用于初始化引导变量的所以不应该被覆写。
然后使用 EALLOW 和 EDIS 宏来使能对 PIE Vector Table 的写操作权限。
通过循环将 Source 指针指向的值复制给 Dest 指针指向的地址并递增这两个指针的值。循环执行 221 次TMS32F28377D芯片具有 221 个中断向量表项每个项都包含一个指向中断服务程序的地址将 PieVectTableInit 的内容复制到 PieVectTable。
最后通过设置 PieCtrlRegs.PIECTRL.bit.ENPIE 为 1启用 PIEPeripheral Interrupt Expansion向量表。
简单来说该函数的作用是将预定义的中断向量表数据复制到实际的中断向量表地址并启用中断向量表。这样处理器在执行中断服务程序时会根据中断发生的类型找到相应的中断向量表项从而执行相应的中断服务程序。
该函数的作用是将预定义的中断向量表数据复制到实际的中断向量表地址并启用中断向量表。这样处理器在执行中断服务程序时会根据中断发生的类型找到相应的中断向量表项从而执行相应的中断服务程序。
二、dsp时钟设置 时钟源选择
2803x系列DSP有两个内部时钟源INTOSC1和INTOSC2可以不需要外部时钟。同时也具有PLL时钟模块。一共有4种时钟源可供选择
1 INTOSC110MHz
内部时钟源1INTOSC1此时钟提供给看门狗块模块内核和CPU定时器2 。
时钟频率默认为10MHz可以通过INTOSCnTRIM寄存器修改频率。
2 INTOSC210MHz
功能与INTOSC1是一样的。
3 外部晶体振荡器
使用外部晶体振荡器给芯片提供时钟晶振连接于X1/X2 脚。
4 外部时钟源
如果不使用外部晶振作为时钟源可以选择这种模式。时钟从外部时钟源的XCLKIN引脚输入生成。
注意XCLKIN复用于GPIO19或GPIO38脚。可以通过XCLK寄存器的XCLKINSEL位选择是GPIO19还是GPIO38作为XCLKIN输入。
分析通过上面可以总结以下几点
①总共四个时钟源
②系统时钟所选择时钟*倍频系数/分频系数
比如下面找个就是10*12/260MHz