Sys.c使用前的补充知识(持续更新)

/*                                       ---STM32寄存器架构---


 

STM32寄存器架构的一些常见寄存器:

    SCB:属于STM32寄存器架构中的全局控制寄存器区域,扮演着控制整个MCU的重要角色。

    FLASH:闪存负责存储程序代码并执行程序。在STM32中,FLASH被分成属于芯片不同区域,有不同的保护状态。

    SRAM:静态随机存储器(SRAM)是动态随机存储器(DRAM)的替代品。SRAM不需要刷新,具有更好的速度和可靠性。

    EXTI:外部中断和事件控制器允许致外部I/O实现中断事件、信号和通信。

    NVIC:嵌入式向量中断控制器(NVIC)处理中断,NVIC具有优先级控制,允许最高优先级中断被处理时不被插入。

    RCC:时钟控制器(RCC)负责控制芯片内的时钟。它提供外部高速时钟、PLL时钟和使用内部RC时钟的选项。

    GPIO:通用I/O端口(GPIO)提供芯片的输入和输出。具体而言,GPIO与芯片内部的引脚相连,它通常被用于以数字形式对芯片电路进行输入和输出控制操作。

    TIM:定时器(TIM)用于定时,计数器和其他处理。TIM可以执行定时和计数函数,例如PWM(脉宽调制)产生和从其他定时器的计数器触发实现复杂的计时电路。

    UART:串行通信接口(UART)允许芯片向外发送/接收通信。UART具有适应通信速度,使数据在两个UART之间进行双向通信。

    ADC:模数转换器(ADC)将模拟信号转换为数字信号,以便芯片能够读取并进行处理。

    I2C:串行交互器(I2C)可用于与其他设备进行通信,对芯片进行输入/输出控制,并与其他芯片/徽标之间进行通信。

    AFIO: 为STM32芯片提供了一种灵活的IO映射方法

    SysTick: 它通常用于嵌入式系统中的延时和时间管理。

这些和其他寄存器组成了STM32的完整寄存器架构,对于STM32开发者而言,了解每个寄存器的作用和使用方法能够更好地掌握芯片资源的整体结构,调试和修复硬件问题。

*/

/*                                         ---SCB---


 

SCB(系统控制块)包含的关键寄存器和标志位:

1 CPUID寄存器:用于查看处理器核的型号和版本号。

2 INTCTRL寄存器:用于控制中断处理和优先级,包括NVIC优先级和SysTick定时器的中断控制。

3 ACTLR寄存器:用于启用一些ARM体系结构的可选特性。

4 SCR寄存器:用于控制处理器的状态和行为,包括使能/禁用ISR、使能/禁用低功耗模式等。

5 CCR寄存器:用于控制处理器的协处理器和指令集状态,包括使能/禁用FPU、协处理器和Thumb2模式。

6 SHCSR寄存器:用于控制系统硬件站立状态,包括使能/禁用异常。

7 DFSR寄存器:用于指示数据存储器的状态和故障信息。

8 MMFSR和BFSR寄存器:用于指示数据和指令的访问权限与的状态,包括存储器访问异常、总线访问异常和未定义指令异常等。

9 ISR寄存器:用于指示活动的异常或中断,同时也可用于清除挂起的异常和中断。

10 VTOR寄存器: 用于存放向量表的基址地址。

11 AIRCR寄存器:用于存放处理器复位后的默认状态值,可以通过该寄存器复位处理器。

12 STIR寄存器:用于软件触发中断,在中断响应期间可以使用该寄存器来启动一个新的中断请求。

13 SHP寄存器:用于控制NVIC中断优先级,包括设置中断群组、设置中断优先级。

14 CPACR寄存器:用于控制协处理器的访问权限,包括使能/禁用VFP模块和NEON模块等。

15 CFSR寄存器:用于指示处理器的状态和故障信息,包括处理器异常、存储器访问异常、总线访问异常等。

16 HFSR寄存器:用于记录处理器发生硬件异常时的相关信息。

17 DFSR寄存器:用于指示数据访问异常时的相关信息。

18 MMAR和BFAR寄存器:用于指示内存地址发生异常的相关信息。

*/

/*                                           ---AFIO---



 

1 AFIO_MAPR:IO映射寄存器,用于配置GPIO复用功能。

2 AFIO_EXTICR1-4:外部中断线控制寄存器,用于配置外部中断线连接的GPIO引脚。

3 AFIO_MAPR2:用于配置系统Flash访问方案。

4 AFIO_EVCR:事件控制寄存器,用于控制事件和事件输出。

5 AFIO_MAPR_SWJ_CFG:JTAG的引脚配置寄存器,用于配置JTAG的SWJ模式,该模式用于JTAG的调试、在单线调试模式中的调试和板级测试。

6 AFIO_MAPR_CAN_REMAP:CAN接口映射寄存器,用于配置CAN接口的复用映射。

*/


 

/*                                           ---NVIC---



 

1 NVIC_ISER0-NVIC_ISER3:NVIC中断使能寄存器,用于控制每个中断的使能状态。

2 NVIC_ICER0-NVIC_ICER3:NVIC中断禁止寄存器,用于控制每个中断的禁止状态。

3 NVIC_IPR0-NVIC_IPR95:NVIC中断优先级注册表,用于配置每个中断的优先级值,其中每个寄存器包含了4个中断的优先级。

4 NVIC_STIR:NVIC软件触发中断寄存器,用于在处理器当前中断响应结束后,立即产生一个新的中断请求。

5 NVIC_ICPR0-NVIC_ICPR3:NVIC中断清除寄存器,用于清除每个中断的挂起状态,以便下一次中断响应。

6 NVIC_ISPR0-NVIC_ISPR3:NVIC中断挂起寄存器,用于将中断请求挂起,以保持中断的优先级状态。

7 NVIC_IABR0-NVIC_IABR3:NVIC中断活动标识寄存器,用于确定每个中断的活动状态。

8 NVIC_IPR:NVIC优先级寄存器。

9 NVIC_ITCR:指令跟踪和外设数据访问使能寄存器。

10 NVIC_ITNS:中断输入使能寄存器。

*/


 

/*                                         ---RCC---




 

1 RCC_CR:时钟控制寄存器,用于控制内部时钟源的配置和使能状态,能配置开启HSE、HSI、PLL时钟源等。

2 RCC_CFGR:时钟配置寄存器,用于配置和控制STM32芯片系统时钟的分频和倍频,以便调整系统时钟和各个外设时钟的频率。

3 RCC_APB1ENR:APB1总线时钟使能寄存器,控制APB1总线上的外设时钟使能状态,可以开启或关闭相应的外设时钟。

4 RCC_APB2ENR:APB2总线时钟使能寄存器,控制APB2总线上的外设时钟使能状态,可以开启或关闭相应的外设时钟。

5 RCC_AHBENR:AHB总线时钟使能寄存器,控制AHB总线上的外设时钟使能状态,可以开启或关闭相应的外设时钟。

6 RCC_CSR:时钟控制和状态寄存器,用于存储和控制系统时钟的状态和复位信息。

*/




 

/*                                             ---SysTick---

    1 SYSTICK_CTRL Register

    这个寄存器(地址:0xE000E010)用于控制SysTick定时器的行为。其中,各位的含义如下:

        Bit 0: ENABLE,1表示启用SysTick定时器,0表示禁用。

        Bit 1: TICKINT,1表示启用SysTick定时器中断,0表示禁用。

        Bit 2: CLKSOURCE,1表示使用处理器时钟作为SysTick的时钟源,0表示使用外部时钟源作为SysTick的时钟源。

        Bit 16~23: RESERVED,保留位,写入值将被忽略。

        Bit 24~31: COUNTFLAG,1表示SysTick定时器当前已经向下计数至0(即SysTick溢出),0表示SysTick计数器尚未溢出。

       

    2 SYSTICK_LOAD Register

    这个寄存器(地址:0xE000E014)用于设置SysTick定时器的重载值。

        SysTick定时器计数器向下计数每减少1个计数值,就会发出一个中断。

        可以将加载寄存器SYSTICK_LOAD用于装载重载值。在每次中断后,计数器将被重置为新的装载值。

    3 SYSTICK_VAL Register

    这个寄存器(地址:0xE000E018)用于读取当前SysTick计数器的值。

        因为SysTick计数器是向下计数的,所以它的值是从LOAD到0的计数值。

    4 SYSTICK_CALIB Register

    这个寄存器(地址:0xE000E01C)包括了SysTick定时器的特性寄存器。其中,各位的含义如下

        Bit 0: TENMS,这个只读寄存器包含计数器从LOAD减去1到0的周期数,这个值可用于校准外部时钟源的精度。

        Bit 1~23: RESERVED,保留位,写入值将被忽略。

        Bit 23: SKEW,1表示当前外部时钟源有斜率(Skew),0表示无斜率。Skew表示IFF机制(插入删除标识)时的时钟抖动或者时钟突跳。

        Bit 24: NOREF,1表示该外部时钟源不可访问,时钟可以用于内部使用,但不能用于时钟源校准,0表示该外部时钟源是可访问的。

        Bit 25: RESERVED,保留位,写入值将被忽略。

        Bit 26: SKEWCTL,1表示启动IFF斜率控制,0表示禁用。

        Bit 27~31: RESERVED,保留位,写入值将被忽略。


 

*/

#include <stdio.h>

int main(void)

{

    printf("hello word!!!");

    return 0;

}

猜你喜欢

转载自blog.csdn.net/JohnJill/article/details/130546189