STM32精华总结
STM32学习笔记小结
STM32学习笔记目录STM32学习笔记 (1)一、入门 (2)目标->实战项目 (2)STM32学习方法 (3)ARM简介 (4)二、外设功能模块 (5)GPIO原理与工作模式 (5)串行通信 (6)硬件下载与调试 (6)Cortex-M3复用功能(AF)和重映射功能 (6)Systick的使用 (7)通用定时器 (7)SPI与数码管 (7)I2C通信 (8)NVIC中断 (8)PWM基础 (9)RCC内部结构与原理 (9)ADC模数转换 (10)内部温度传感器 (10)窗口看门狗 (10)USB应用 (11)三、问题 (11)在线调试 (12)一、入门STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,主要包括STM32F101“基本型”系列、STM32F103“增强型”系列、STM32F105、STM32F107“互联型”系列。
STM32微控制器满足嵌入式开发低功耗和高性能的要求,并且拥有简单易上手的固件函数库,避免了传统ARM单片机开发操作寄存器的模式,所以十分受欢迎,应用广泛。
作者只学过一些51单片机的基础,就直接上手STM32,边学边用。
该篇笔记也是随意的记录一下,要想系统的学习一下,个人认为资料手册(data sheet)、参考手册(Reference Manual)和用户手册(固件函数库)三个文档再有开发板实际操作,完全足够。
熟练掌握以上内容,触类旁通,成为STM32开发的高手指日可待。
目标->实战项目STM32学习方法开发环境(MDK/IAR)→寄存器or固件库→软件仿真&开发板硬件→学习难度建立不受库版本限制的工程项目:1.准备好文件(Startup Code、Lib、User)2.建立工程不添加Startup Code3.工程管理添加需要的库文件、自定义文件4.编译链接ARM简介ARM7衍生出全新的Cortex架构,三管齐下:Cortex-A:高性能应用处理器。
stm32实训报告经验总结
stm32实训报告经验总结STM32实训报告经验总结一、引言在这次STM32实训中,我深入了解了微控制器的基本原理和操作,学会了使用Keil MDK-ARM软件进行编程,掌握了STM32的GPIO、串口、定时器等基本外设的使用。
通过实际操作,我对于嵌入式系统设计和开发有了更深刻的理解。
二、实训过程1. 基础知识学习:首先,我通过阅读教材和网上资料,学习了微控制器的基本概念、STM32的体系结构和外设特性。
我了解到,STM32是一款功能强大的32位ARM Cortex-M核微控制器,具有丰富的外设接口和强大的处理能力。
2. 开发环境搭建:我按照教程安装了Keil MDK-ARM软件,配置了开发环境。
Keil软件提供了完整的开发工具链,包括代码编辑、编译链接、调试和仿真等功能。
3. 硬件平台搭建:我使用STM32开发板搭建了硬件平台。
我熟悉了开发板的电路原理图和引脚配置,了解了各个外设接口的使用方法。
4. 编程实践:在理解了基本概念和操作方法后,我开始进行编程实践。
我编写了GPIO输入输出、串口通信、定时器中断等程序,通过实际操作掌握了STM32的基本外设使用。
5. 调试与优化:在编程过程中,我遇到了许多问题,通过查阅资料和反复调试,最终解决了问题。
我还对程序进行了优化,提高了程序的效率和稳定性。
三、实训收获通过这次实训,我掌握了STM32微控制器的开发流程和基本外设的使用方法。
我学会了使用Keil MDK-ARM软件进行编程和调试,了解了嵌入式系统设计和开发的实际操作过程。
同时,我在实践中遇到了许多问题,通过解决问题,我提高了解决问题的能力。
四、展望未来这次实训让我对嵌入式系统设计和开发有了更深刻的理解。
在未来的学习和工作中,我将继续深入学习嵌入式系统的相关知识,掌握更多的技能和方法。
同时,我将尝试将所学知识应用到实际项目中,提高自己的实践能力和工程经验。
第4章STM32开发基础知识总结
第4章STM32开发基础知识总结STM32是一款由STMicroelectronics开发的基于ARM Cortex-M内核的32位单片机系列。
它具有丰富的外设和强大的性能,被广泛应用于嵌入式系统开发领域。
本章主要介绍了STM32开发的基础知识,包括STM32的主要特点、STM32的系统结构、STM32的寄存器、中断和时钟系统等。
在这些内容中,我们可以看到STM32的强大功能和灵活调整的性能。
首先,STM32的主要特点是高性能、低功耗和易于扩展。
它具有高速的CPU、丰富的外设、多种存储器、多种通信接口等特点,可以满足不同嵌入式系统的需求。
此外,STM32采用高级微控制器接口规则(Advanced Microcontroller Bus Architecture, AMBA),使得不同外设可以方便地进行通信和控制,提高了系统的整体性能和可靠性。
另外,STM32还具有低功耗和易于扩展的特点,并且支持多种不同的睡眠模式,可以根据实际需求来管理能量消耗和系统功能。
其次,STM32的系统结构主要由核心和外设组成。
核心是STM32的处理器单元,基于ARM的Cortex-M内核,包括处理器、存储器和调试接口等。
外设是与核心进行通信和控制的设备,包括GPIO、串口、I2C、SPI 等。
在STM32中,外设被映射到特定的地址空间,可以通过读写这些地址来进行控制和数据传输。
此外,STM32还支持内存映射和外设映射,可以方便地访问外部存储器和外设。
第三,STM32的寄存器用于配置和控制外设的功能。
每个外设都有一组寄存器,用于存储和读取外设的状态和配置信息。
在STM32中,寄存器可以通过寄存器地址进行直接访问,也可以通过寄存器定义和结构体来进行访问。
通过配置寄存器,可以设置外设的工作模式、时钟频率、中断使能等。
通过读取寄存器,可以获取外设的状态、数据和中断信息。
寄存器操作是STM32开发中的重要部分,需要熟练掌握和灵活运用。
stm32知识点最终版!
stm32知识点最终版!STM32是由意法半导体(STMicroelectronics)公司推出的一系列32位ARM基于Cortex-M内核的微控制器,广泛应用于各种电子设备中。
它具有高性能、低功耗、丰富的外设资源以及丰富的开发工具和生态系统,被广泛应用于嵌入式系统设计中。
1.STM32系列STM32系列包括多个不同型号的微控制器,每个型号都有其特定的功能和特点。
主要的系列包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7等。
2. ARM Cortex-M内核STM32采用了ARM Cortex-M内核,这是一款低功耗、高性能的32位微处理器内核。
Cortex-M内核具有良好的实时性、低功耗特性以及简洁的指令集,特别适用于嵌入式系统开发。
3.外设资源STM32具有丰富的外设资源,包括通用输入输出口(GPIO)、通用串行总线(UART、SPI、I2C)、模拟-数字转换器(ADC)、定时器(Timer)、中断控制器(NVIC)等。
这些外设资源可以灵活地满足各种应用需求。
4.开发工具和生态系统5.开发流程6.应用领域STM32被广泛应用于各种嵌入式系统设计中。
它可以用于工业控制、智能家居、电动车控制、消费电子产品等领域。
其灵活性和可扩展性使得它成为嵌入式开发人员的首选。
7.嵌入式系统设计嵌入式系统设计是指将STM32微控制器与其他硬件组件(如传感器、执行器等)结合起来,构建出具有特定功能的系统。
开发者需要熟悉硬件电路设计、嵌入式编程、通信协议等知识,以完成系统的设计和开发。
8.低功耗优化STM32具有低功耗特性,能够在运行时最大程度地减少能耗。
开发者可以通过优化代码、合理配置外设资源、使用低功耗模式等方法,进一步降低系统的功耗,延长设备的使用时间。
9.实时性要求STM32的Cortex-M内核具有良好的实时性,可以满足实时控制和处理要求。
开发者可以使用定时器、中断和DMA等机制,保证系统对实时事件的快速响应和处理。
STM32单片机的知识点总结
STM32单片机的知识点总结STM32 单片机是意法半导体公司(STMicroelectronics)推出的一款基于 ARM Cortex-M 内核的 32 位微控制器。
它集成了高性能的处理器、丰富的外设和丰富的通信接口,具有低功耗、高性能和可扩展性等特点。
在学习 STM32 单片机的过程中,有以下一些关键的知识点需要掌握。
1. ARM Cortex-MSTM32 单片机采用 ARM Cortex-M 内核,包括 Cortex-M0、Cortex-M3、Cortex-M4 和 Cortex-M7 四个系列。
不同系列的 Cortex-M 内核具有不同的性能和特性,需要根据应用的需求选择适合的型号。
2.STM32单片机硬件架构3. STM32 CubeMX4.STM32外设STM32单片机具有丰富的外设,包括GPIO、定时器、UART、SPI、I2C、ADC、DAC、PWM等。
了解这些外设的特性和使用方法,可以实现各种不同类型的应用,如数字输入输出、定时控制、串行通信、模拟信号采集等。
5.STM32中断6.STM32时钟7.STM32低功耗模式8.STM32中文手册9.STM32HAL库STM32 提供了一套硬件抽象层(Hardware Abstraction Layer,HAL)库,用于快速开发和移植应用程序。
了解 STM32 HAL 库的使用方法,可以快速搭建 STM32 系统,并简化底层驱动编程。
10.STM32串口调试和编程以上是关于STM32单片机的一些关键知识点的总结,希望能对您的学习与应用有所帮助。
当然,除了这些知识点之外,还有很多其他的内容需要深入学习和探索,如实时操作系统(RTOS)、外设驱动、外部存储器接口等。
不断学习和实践将帮助您更好地掌握和应用STM32单片机。
关于stm32的知识总结
关于stm32的知识总结关于STM32的知识总结STM32是一款由STMicroelectronics公司推出的32位单片机系列产品,广泛应用于各种嵌入式系统中。
它具有高性能、低功耗、丰富的外设资源和灵活的开发环境等特点,使其成为了嵌入式系统设计的首选。
一、STM32的特点1. 高性能:STM32系列搭载了Cortex-M系列的处理器核心,具有较高的运算能力和响应速度。
同时,它还集成了多个硬件加速器,如DMA(直接存储器访问)控制器和浮点运算单元,可以有效提升系统性能。
2. 低功耗:STM32采用了先进的低功耗技术,包括多级睡眠模式、功耗调节功能和时钟管理等,以降低功耗并延长电池寿命。
此外,它还支持动态电压调节(DVC)和功耗域(PD)控制,以根据实际需求灵活管理功耗。
3. 丰富的外设资源:STM32系列提供了丰富的外设资源,包括通用输入输出(GPIO)、定时器、串行通信接口(UART、SPI、I2C)、模数转换器(ADC)、模拟比较器、PWM输出等。
这些外设的存在,极大地简化了系统设计,并且可以满足各种不同应用的需求。
4. 灵活的开发环境:STM32系列支持多种开发环境,如Keil、IAR 等,同时还提供了丰富的软件库和示例代码,以便开发人员快速上手。
此外,ST公司还提供了一套完整的开发工具链,包括编译器、调试器和仿真器等,方便用户进行开发、调试和测试。
二、STM32的应用领域1. 工业自动化:STM32具有良好的实时性和可靠性,可以广泛应用于工业自动化领域,如PLC(可编程逻辑控制器)、DCS(分布式控制系统)和工业机器人等。
2. 智能家居:STM32的低功耗特性使其非常适合用于智能家居领域,如智能插座、智能灯光控制和智能门锁等。
同时,其丰富的外设资源也可以实现与各种传感器和执行器的连接。
3. 汽车电子:STM32具有较高的抗干扰能力和稳定性,可以在汽车电子系统中发挥重要作用。
它可以用于车身电子、发动机控制、车载娱乐系统等。
stm32心得
stm32心得STM32是一款广泛应用于嵌入式系统开发的微控制器系列,由意法半导体(STMicroelectronics)公司推出。
作为一名嵌入式系统开发者,我在使用STM32的过程中积累了一些心得体会。
STM32具有强大的性能和丰富的外设资源,能够满足各种不同应用场景的需求。
其处理器核心采用ARM Cortex-M系列,性能强劲且低功耗,能够高效地运行复杂的算法和任务。
此外,STM32系列芯片还配备了丰富的外设,如通用串行总线(USART)、通用串行接口(SPI)、通用并行接口(GPIO)等,方便开发者进行各种外设的连接和控制。
这些外设的丰富性使得STM32在各种应用领域都有着广泛的应用。
STM32具有灵活的软件开发环境,便于开发者进行程序编写和调试。
ST公司提供了一套完整的开发工具链,包括集成开发环境(IDE)、编译器、调试器等,使得开发者可以方便地进行代码编写、编译和调试。
同时,ST公司还提供了丰富的软件库和示例代码,开发者可以借助这些资源快速上手,降低开发难度和时间成本。
STM32系列具有良好的可扩展性和兼容性。
ST公司推出了多个型号和系列的STM32芯片,覆盖了不同性能和功能需求的应用场景。
开发者可以根据具体需求选择适合的芯片型号,从而灵活地进行系统设计。
此外,STM32系列还具有良好的软件和硬件兼容性,开发者可以方便地迁移和复用代码,提高开发效率和代码质量。
在实际的项目开发中,我深刻体会到了STM32的优势和便利性。
例如,我曾经开发过一个智能家居系统,利用STM32控制各种家电设备的开关和状态监测。
借助STM32丰富的外设资源,我可以轻松地实现各种设备的连接和控制,而且性能稳定可靠。
同时,STM32的软件开发环境也大大提高了我的开发效率,我可以快速编写和调试代码,快速迭代和优化系统功能。
总结起来,STM32是一款强大而灵活的微控制器系列,具有丰富的外设资源、灵活的软件开发环境和良好的可扩展性和兼容性。
STM32常见知识点
STM32常见知识点1.STM32系列:STM32单片机有多个系列,如STM32F0、STM32F1、STM32F4等。
每个系列有不同的特性和性能,开发者可以根据需求选择最合适的系列。
2. Cortex-M内核:STM32使用ARM Cortex-M系列内核,这是一种简化的、高效的内核,适用于嵌入式系统开发。
Cortex-M内核有不同的版本,如Cortex-M0、Cortex-M3、Cortex-M4等,具有不同的特性和性能。
4.引脚:每个STM32芯片都有一定数量的GPIO引脚,可以用于输入输出。
引脚的数量和功能因芯片而异,要根据需要选择合适的芯片。
开发者可以通过配置寄存器将引脚设置为输入或输出,并通过读写寄存器来读取或改变引脚状态。
6.中断:STM32具有中断控制器,可以支持多种中断源,如外部引脚中断、定时器中断等。
开发者可以通过配置中断控制器和外设来实现中断处理程序,提高系统的实时性和响应能力。
7.定时器:STM32具有多个定时器模块,可以用于生成定时延迟、PWM输出、计时等功能。
开发者可以通过配置定时器的预分频、自动重载值和工作模式来实现不同的定时任务。
8.串口:STM32具有多个串口模块,可以用于与其他设备进行通信,如PC、传感器、无线模块等。
开发者可以通过配置串口的波特率、数据位数、停止位数和校验位等参数来实现不同的串口通信需求。
9.ADC:STM32具有多个ADC模块,可以用于模拟信号的采集。
开发者可以通过配置ADC的分辨率、采样速率和引脚选择等参数来实现模拟信号的采集。
10.外设:除了上述常见的模块外,STM32还具有其他丰富的外设模块,如CAN总线、SPI、I2C等。
开发者可以根据具体需求选择合适的外设模块,以实现更多功能。
11.FLASH和RAM:STM32芯片内置一定容量的FLASH和RAM,用于存储程序代码和数据。
开发者可以通过编译器和链接器将程序代码和数据加载到芯片的FLASH和RAM中,并进行读写操作。
学习stm32工作总结
学习stm32工作总结学习STM32工作总结。
在过去的一段时间里,我一直致力于学习STM32微控制器的相关知识和技能。
通过不懈的努力和学习,我对STM32的工作原理和应用有了更深入的了解,并取得了一些进步。
在这篇文章中,我将总结我学习STM32的经验和收获,希望能够与大家分享。
首先,我深入研究了STM32微控制器的基本原理和架构。
我学习了STM32的内部结构、外设模块和寄存器的功能,以及如何通过寄存器编程的方式对STM32进行控制和配置。
这些知识为我后续的学习和实践打下了坚实的基础。
其次,我通过阅读官方文档和参考书籍,学习了STM32的编程方法和技巧。
我掌握了如何使用Keil、STM32CubeMX等工具进行STM32的程序开发和调试,以及如何编写C语言程序来实现对STM32的控制和应用。
同时,我还学习了如何使用HAL库和标准外设库来简化STM32的编程过程,提高开发效率。
除此之外,我还通过实际的项目实践,不断地提升自己的STM32应用能力。
我参与了一些STM32相关的项目,包括LED灯控制、温湿度监测、电机驱动等。
通过这些项目的实践,我对STM32的应用场景和实际开发经验有了更深入的了解,也提高了自己的问题解决能力和实际操作技能。
总的来说,学习STM32是一个不断探索和提升的过程。
通过系统的学习和实践,我对STM32的工作原理和应用有了更深入的了解,也积累了一定的实际经验。
在未来,我将继续深入学习STM32的相关知识和技能,不断提升自己的能力,为更多的STM32应用项目做出贡献。
希望我的学习总结能够对其他学习STM32的同学有所帮助,共同进步。
STM32各模块学习总结
STM32各模块学习总结STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)中的优先级概念STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位可以有8种分配方式,如下:所有8位用于指定响应优先级最高1位用于指定抢占式优先级,最低7位用于指定响应优先级最高2位用于指定抢占式优先级,最低6位用于指定响应优先级最高3位用于指定抢占式优先级,最低5位用于指定响应优先级最高4位用于指定抢占式优先级,最低4位用于指定响应优先级最高5位用于指定抢占式优先级,最低3位用于指定响应优先级最高6位用于指定抢占式优先级,最低2位用于指定响应优先级最高7位用于指定抢占式优先级,最低1位用于指定响应优先级这就是优先级分组的概念。
-------------------------------------------------------------------------------- Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:第0组:所有4位用于指定响应优先级第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级第4组:所有4位用于指定抢占式优先级可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种:NVIC_PriorityGroup_0 => 选择第0组NVIC_PriorityGroup_1 => 选择第1组NVIC_PriorityGroup_2 => 选择第2组NVIC_PriorityGroup_3 => 选择第3组NVIC_PriorityGroup_4 => 选择第4组接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:// 选择使用优先级分组第1组NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);// 使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);// 使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);要注意的几点是:1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;2)抢占式优先级别相同的中断源之间没有嵌套关系;3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断则可以为这个中断源指定任意有效的响应优先级别。
学习STM32笔记汇总
STM32F207学习笔记1、使用篇 (1)1、1标准外设库的简介 (1)1.2标准外设库中一些文件的作用 (2)1.3开发拾遗 (2)2、STM32技术概述 (3)2.1 一些概述 (3)2.2 STM32的最小系统 (3)2.3 一些IO (4)2.31 GPIO与AFIO (4)2.32 RCC 复位与时钟控制 (5)2.33 中断与事件控制 (6)2.34总线结构与存储器: (6)2.35 定时器(是定时还是计数只取决于时钟源) (6)1、使用篇1、1标准外设库的简介在嵌入式设计中,硬件成本不断降低,而软件成本大幅升高,随着新型内核的不断出现,软件底层设计的复杂性和移植的困难度在不断增加,ARM公司意识到这个问题后,联合芯片提供商,为软件人员提供标准的应用程序接口,而CMSIS就是为CONTEX-M3内核提供的。
这些通用的API接口来访问CORTEX 内核以及一些专用外设,以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗。
只要都是基于M3的芯片,代码均是可以复用的。
CMSIS 包含了CORESUPPORT和DECICESUPPORT。
即ARM负责的东西和芯片厂商如ST负责的。
其中ARM提供了core_m3.c和.h。
定义一些CORTEX-M处理器内部的一些寄存器地址以及功能函数。
芯片商提供的启动代码、初始化函数、系统头文件。
为了推广了STM32系列的微处理器芯片,意法半导体可谓是煞费苦心!不光提供了CMSIS要求内容,还提供了各个模块的标准库函数.,包含了所有外设的驱动函数,覆盖每一种外设的所有功能。
可以让程序员将更多的精力放在应用开发,加快上市时间,用标准的ANSI-C编写不受开发环境的影响。
这一系列的辅助文件以固件库(标准外设库)来提供。
那手头上的版本STM32F2xx_StdPeriph_Lib_V1.1.0来说,有三部分构成:1、library:标准外设库的主要内容,由两部分构成①CMSIS(1)ARM公司提供的内核访问函数等。
stm32心得体会
stm32心得体会作为一名工程师,我有幸接触到了STM32微控制器,这是一款功能强大且广泛应用的微控制器。
在使用STM32过程中,我获得了许多宝贵的经验和体会。
首先,STM32的灵活性给开发者带来了巨大的便利。
不同于其他微控制器,STM32具有丰富的外设和引脚资源。
无论是控制器与其他外部设备的通信,还是为外部设备提供驱动,STM32都能够满足需求。
开发者可以根据具体应用的需求,选择适合的外设和引脚配置,实现各种功能。
这种灵活性使得STM32在不同领域的应用中都能够发挥重要作用。
其次,STM32的强大性能为开发者提供了良好的开发环境。
STM32的处理器核心采用了ARM Cortex-M系列,具有高性能和低功耗的特点。
这使得开发者能够编写高效的代码,在保证系统正常运行的同时,尽量减少对处理器资源的占用。
此外,STM32还配备了丰富的存储器,开发者可以根据需要选择适当的存储器类型,保证代码和数据的高效运行。
最重要的是,STM32具有强大的软件生态系统。
STMicroelectronics提供了丰富的开发工具和软件库,包括STM32CubeIDE、STM32Cube软件包等。
这些工具和软件库不仅提供了开发环境和调试功能,还提供了丰富的示例代码和驱动程序,帮助开发者快速实现功能。
此外,STM32社区也是一个宝贵的资源,开发者可以在社区中交流经验、解决问题,共同进步。
在使用STM32的过程中,我还注意到了一些需要注意的问题。
首先,由于STM32具有强大的功能和丰富的外设,开发者需要仔细阅读相关文档,并了解各个外设的使用方法和限制条件。
这样才能充分发挥STM32的强大功能,并避免在应用中出现问题。
另外,由于STM32的引脚资源有限,开发者需要合理规划引脚的使用,以确保各个外设之间的互不干扰。
总之,STM32是一款功能强大且灵活易用的微控制器。
它提供了丰富的外设和引脚资源,具有强大的性能和良好的开发环境。
在使用STM32的过程中,我们需要充分发挥其优势,合理规划外设和引脚的使用,同时借助STMicroelectronics提供的开发工具和软件库,使得开发工作更加高效和便捷。
stm32cubemx实验报告总结和心得
stm32cubemx实验报告总结和心得在进行STM32Cubemx实验的过程中,我深深感受到了这款软件的便利和强大。
STM32Cubemx是一款由STMicroelectronics公司开发的工具,它可以帮助开发人员快速生成基于STM32微控制器的初始化代码,极大地降低了开发的难度和工作量。
在本次实验中,我使用STM32Cubemx完成了一个简单的LED控制实验,并获得了一些宝贵的心得和体会。
首先,STM32Cubemx的界面简洁直观,操作相对简单。
在使用过程中,我发现该软件提供了丰富的代码生成选项,包括时钟配置、引脚配置、外设配置等等。
通过简单地点击和选择,我就能够轻松地生成所需的初始化代码,并将其导入到我的项目中。
其次,STM32Cubemx支持多种外设的配置和集成。
在实验中,我需要控制一个LED的亮灭,并通过按键来进行触发。
通过STM32Cubemx,我可以方便地配置GPIO引脚的输入输出,并将按键和LED与相应的引脚连接起来。
这种可视化的配置方式使得硬件和软件之间的连接变得更加简单和直观。
此外,STM32Cubemx还提供了一些实用的功能和资源。
在实验中,我遇到了一些问题,例如外设的中断处理和时钟配置等。
通过查阅STM32Cubemx的在线文档和社区论坛,我很快找到了解决方案,并成功地解决了这些问题。
这些资源的丰富性和及时性为我提供了很大的帮助,也让我的实验进展得更加顺利。
综上所述,STM32Cubemx是一款功能强大且易于使用的STM32微控制器代码生成工具。
在本次实验中,我通过使用STM32Cubemx完成了LED控制实验,并获得了许多宝贵的心得和体会。
我相信,在今后的学习和工作中,我将继续利用STM32Cubemx这一强大工具,提高我的开发效率和项目质量。
stm32学习总结
stm32学习总结学习总结单片机学习经历总结自从大二寒假接受了一次初始培训开始,我便开始了单片机的学习,一开始借了一块MS430G255的板子,于是便从MS班始学习单片机.一开始的我对于单片机一窍不通,只能对照着数据手册学习,逐渐开始了解什么是IO口,中断,定时器,AD转换等.开学来了以后接受了四次培训,期间又重新熟悉这些模块并在学长指导下开始写了一些程序作为练习.后续的学习中我在串口通讯这里遇到了很大阻碍,不太能理解其中的含义,网上的解释又不太看得懂,便找了一些STM32的视频来学习串口,期间发现51和MS5经不是主流的板子了,现在的厂商更多的是用STM3型样的板子,于是后来的学习重心开始放到了STM32,由于有了前面的根底,这次从头的学习就更加容易理解STM32的原理与使用了.MS430G2553些模块的总结(1).io口模块,1.我们实用的MS430G255宥两组IO口,是1和XXX口的存放器有:方向选择存放器_DIR,输出存放器_OUT输入存放器_IN,IO 口内部上拉或下拉电阻使能存放器_RENIO功能选择存放器_SEL和_SELZIO中断使能存放器_IE,中断沿选择存放器_lES,IO口中断标志存放器_lFGo3.所有的IO都带有中断,其中所有的1公用一个中断向量,所有的2公用一个中断向量.所以在使用中断时,当进入中断后,还要判断到底是哪一个IO产生的中断,判断方法可以是判断各个IO口的电平.4.中断标志_IFG需要软件去除,也可以用软件置位,从而用软件触发一个中断XXX:如果引脚选择了内部的上拉或下拉电阻使能,那么_OU 似定电阻是上拉还是下拉,0:下拉,1:上拉(2).时钟系统XXX的时钟源有:(1).外接低频晶振LF_T1CLK低频模式32768Hz,高频模式450KHz8MHz(2).外接高速晶振_T2CLK8MHz(3).内部数字限制振荡器DCO(4).超低功耗低频振荡器VLO2.时钟模块:430的时钟模块有MCLKSMCLKACLK:(1).主系统时钟MCLK提供应MS430勺CU寸钟.可以来自LF_T1CLK_T2CLKDCOVLO可选,默认为DCO(2).子系统时钟SMCLK提供应高速外设.可以来自LF_T1CLK_T2CLKDCOVLO可选,默认为DCO(3).辅助系统时钟ACLK:提供应低速外设.可来自LF_T1CLKVL0S一个网上找到的比拟严谨的延时程序/#defineCU_R(double)160XXXX0000)/cufrequency160XXXX0000#define CU_R(double)1于000)/cufrequency1于000#definedelay_us(_)_delay_cycles(long)(CU_F_(double)_/XXX.0)#defin edelay_ms(_)_delay_cycles(long)(CU_F_(double)_/1000.0)(3).定时器XXX具有两个16位的定时器:Timer0_ATimer1_A.分别具有三个捕捉/比拟寄存器,具有输入捕捉,输出比拟功能.可以产生定时中而,也可以产生XXX的捕获/比拟存放器,当为捕获模式时:当捕获发生时,把TAR的值装载到TACCR_K当为比拟模式时:TACCR沛装的是要与TAR存放器相比拟的值.(四)XXX是十位的AD,在g2553上有A0A7八个可以外接的AD通道,A10接到片上的温度传感器上,其他的通道都接在内部的VCC或GND!XXX 的采样方式有:单通道单次采样,单通道屡次采样,多通道单次采样,多通道屡次采(五)UART这个模块这要设置好几个限制存放器,设置波特率,写几个收发函数就可以了.STM3殍习的总结STM32的使用与MS%同,它可以使用固件库来写程序,使得编写的难度与复杂度大大降低,但是在学习阶段我也必须了解它们的底层的具体存放器来帮助我更好的了解与学习.在之前的学习中我学习了它的XXX的配置和使用,2.中断的使用,3.如何配置系统时钟,XXX的配置和使用,6.根本定时器和高级定时器,XXX的配置和使用.由于这些模块的一些参数比拟长和复杂,局部和MSM些相似.而且它的配置有具体的固件库格式很容易了解,在这里我就不一一列举了.在学习过程中遇到的一些问题和对板子的看法XXX在学习MS430勺过程中,对于如何配置中断是我一开始遇到的一个很大的问题,我对它的中断使用格式有些混淆,随后在网上查询使我解决了这类问题.后来在编写程序的练习中对于中断的开关也出现过问题,后来发现不能用BIS_SR(LM0_bits+GIE)这样,不然会导致CI#眠,最好用_ENIT().在程序编写中对于循环的嵌套是个必须要注意的点,很容易出现错误.对于MS430G255眩个板子,它是低功耗的板子,但是IO口太少,对于做一些作品有很大限制XXX学习STM3井我用的是这款板子,它上面有7个GIQ3个ADC5个串口,对于现在的我做一些小作品来说是完全足够了.在学习和使用的过程中对于USART勺使用尤为重要.之前做一个程序同时翻开了串口1和串口2但是串口1接受的数据发送给电脑却不能通过电脑发送给串口2,是由于其中发生了溢出中断,没有清楚OR6导致卡住了.在STM32的学习中要更仔细并多看数据手册,遇到问题也要多在网上询问,这样才能提升自己。
Stm32知识点总结
Stm32知识点总结:1.stm32模版:a.CMSIS 标准——stm32结构及库层次关,系解决不同的芯片厂商生产的Cortex微控制器软件的兼容性问题。
(内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由ARM公司提供。
设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。
)b.Libraries文件夹下是驱动库的源代码及启动文件。
c.Project 文件夹下是用驱动库写的例子跟一个工程模板。
d.还有一个已经编译好的HTML文件,是库帮助文档。
内核与外设的库文件分别存放在CMSIS和STM32F10x_StdPeriph_Driver文件夹中。
e.Libraries\CMSIS\CM3文件夹下又分为CoreSupport和DeviceSupport文件夹。
在CoreSupport中的是位于CMSIS标准的核内设备函数层的M3核通用的源文件core_cm3.c 和头文件core_cm3.h。
core_cm3.c屏蔽不同编译器的差异。
core_cm3.c 文件中包含了stdin.h这个头文件主要作用是提供一些新类型定义,这些新类型定义屏蔽了在不同芯片平台时,出现的诸如int的大小是16位,还是32 位的差异。
f.在DeviceSupport文件夹下的是启动文件、外设寄存器定义&中断向量定义层的一些文件,system_stm32f10x.c该文件的功能是设置系统时钟和总线时钟。
stm32f10x.h 这个文件非常重要,是一个非常底层的文件。
所有处理器厂商都会将对内存的操作封装成一个宏,即我们通常说的寄存器,并且把这些实现封装成一个系统文件,包含在相应的开发环境中。
g.Libraries\CMSIS\Core\CM3\startup\arm文件夹下是由汇编编写的系统启动文件,不同的文件对应不同的芯片型号,在使用时要注意。
cl:互联型产品,stm32f105/107系列vl:超值型产品,stm32f100系列xl:超高密度(容量)产品,stm32f101/103系列ld:低密度产品,FLASH小于64Kmd:中等密度产品,FLASH=64 or 128hd:高密度产品,FLASH大于128h.Libraries\STM32F10x_StdPeriph_Driver文件夹下有inc(include 的缩写)跟src(source的简写)这两个文件夹,这都属于CMSIS的设备外设函数部分。
STM32相关知识点总结讲解
STM32相关知识点总结讲解STM32是由意法半导体公司(STMicroelectronics)推出的一款32位单片机系列产品。
STM32系列单片机具有高性能、低功耗、丰富的外设资源和易于开发的特点,被广泛应用于工业控制、消费电子、通信设备等领域。
以下是STM32相关的知识点总结:1.STM32系列单片机的特点:- 采用ARM Cortex-M内核,性能强大,运算速度快。
-丰富的外设资源,包括通用输入输出引脚(GPIO)、通用串行总线(USART、SPI、I2C)、模拟数字转换器(ADC)、定时器等。
-低功耗设计,能够在低电压、低功耗模式下运行。
- 丰富的开发工具和软件支持,包括开发板、开发环境(如Keil、IAR)和编程软件。
2.STM32系列单片机的分类:根据不同的特性和功能,STM32系列单片机分为多个系列,包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7、STM32L0、STM32L1、STM32L4等系列。
3.STM32的时钟系统:STM32的时钟系统包括主时钟、系统时钟、外设时钟与内核时钟。
主时钟源可以是外部晶体振荡器(HSE)或内部RC振荡器(HSI),系统时钟源可以由主PLL或内部RC振荡器(HSI)提供。
外设时钟与内核时钟可以选择不同的分频系数。
4.引脚和GPIO:5.中断和中断向量表:6.存储器管理:7.定时器和计数器:8.串口通信:9.ADC和DAC:10.低功耗模式:以上是对STM32相关知识点的简要总结和讲解。
由于STM32系列单片机功能丰富、应用广泛,还涉及到更多的知识点和应用场景,需要从事者进一步深入学习和实践。
学习stm32工作总结
学习stm32工作总结
学习STM32工作总结。
作为一名嵌入式系统工程师,学习STM32是非常重要的。
STM32是一款由意法半导体公司(STMicroelectronics)推出的32位ARM Cortex-M微控制器系列,广泛应用于各种嵌入式系统中。
在我学习STM32的过程中,我积累了许多经验和总结,现在我将分享一些关键的工作总结。
首先,学习STM32需要掌握C语言和汇编语言。
C语言是STM32的主要编程语言,而汇编语言则是在一些特殊情况下需要用到的。
我发现通过系统地学习这两种语言,我能更好地理解STM32的工作原理和编程方法。
其次,了解STM32的内部结构和外设功能是非常重要的。
STM32微控制器具有丰富的外设,包括通用定时器、通用异步串行接口、通用同步串行接口、通用串行外设接口等。
掌握这些外设的功能和使用方法,对于编写高效的嵌入式软件是至关重要的。
另外,熟练掌握STM32的开发工具和调试工具也是必不可少的。
例如,我经常使用ST-Link调试器和Keil MDK开发环境来进行STM32的软件开发和调试。
这些工具的熟练使用,可以大大提高工作效率和软件质量。
最后,学习STM32需要不断实践和总结。
在实际项目中,我经常遇到各种各样的问题和挑战,需要不断地学习和总结。
通过不断地实践和总结,我逐渐积累了丰富的经验,提高了自己的技术水平。
总的来说,学习STM32是一项持续的工作。
通过不断地学习和实践,我相信我会不断提高自己的技术水平,为今后的工作做好准备。
希望我的工作总结能够对其他学习STM32的人有所帮助。
学习stm32工作总结
学习stm32工作总结学习STM32工作总结。
作为一名嵌入式系统工程师,学习STM32是必不可少的一项技能。
在过去的一段时间里,我花了大量的时间和精力来学习STM32,并在实际项目中应用了这些知识。
在这篇文章中,我将总结我学习STM32的经验和心得,希望对其他初学者有所帮助。
首先,学习STM32需要对嵌入式系统有一定的了解。
了解嵌入式系统的基本原理和结构对于学习STM32是非常重要的。
此外,对于C语言的基础知识也是必不可少的,因为在STM32的开发过程中,大部分的代码都是用C语言来编写的。
其次,学习STM32需要有一定的电子电路知识。
因为STM32是一款微控制器,它需要和外部的电路进行连接才能发挥其功能。
因此,了解一些基本的电路知识对于学习STM32是非常有帮助的。
在学习STM32的过程中,我发现了一些学习的方法和技巧。
首先,我建议初学者可以通过阅读官方的文档和手册来了解STM32的基本知识和功能。
其次,可以通过一些开源项目来学习STM32的应用,这样可以更快地掌握STM32的开发技巧和方法。
另外,可以通过一些在线的教程和视频来学习STM32的开发,这样可以更直观地了解STM32的使用方法。
在实际项目中应用STM32的过程中,我也遇到了一些问题和挑战。
例如,在连接外部设备时需要考虑到时序和电气特性,这需要对外部设备有一定的了解。
另外,在调试和优化代码的过程中也需要一定的耐心和技巧。
总的来说,学习STM32是一项非常有挑战性的任务,但是通过不断的学习和实践,我相信每个人都可以掌握STM32的开发技能。
希望我的经验和总结可以对其他初学者有所帮助,也希望大家可以在学习STM32的过程中不断进步和成长。
STM32学习经验总结
STM32 学习经验总结
1. 今天把普中开发板上的RS232 芯片烧坏了,所以接下来要完成stlink 的使用,来下载程序,同时也尝试调试程序,也算是被逼的去学一个很有用
的工具,本来我都不想学stlink 的。
2. 先学习一下STM32 的定时器,过程中,加入stlink 的下载和调试。
3. 定时器:STM32 分高级定时器(TIM1 和TIM8),通用定时器(TIM2-5),基本定时器(TIM6,7)。
4. 通用定时器(TIM2-5):1)位于低速APB1 总线上。
2)预分频:将计数器时钟频率降低。
3)各个通用定时器之间是完全独立的。
4)向上计数:从0 到
加载值,其他类似。
5)定时器的时钟来源,可以来源于内部的APB1 时钟倍
频提供,这是时钟来源之一,但是用的比较多,也比较简单。
5. 通用定时器工作过程,只要有印象就可以,在配置的时候知道在配置什幺。
6. 这是时钟的计算方法,其中APB1 的时钟来源于AHB,如果APB1 = AHB,也就是APB1 = 1 * AHB,那幺,此时的CK_INT = APB1,而如果APB1 = AHB / 2,那幺这时候CK_INT = 2 * APB1 的时钟,得到定时器的原始时钟。
stm32心得体会
stm32心得体会我使用STM32微控制器进行项目开发的经验已经超过一年了。
我通过这段时间的使用和学习,对STM32的性能和特点有了更深入的理解。
下面是我使用STM32的心得体会。
首先,STM32具有强大的处理能力。
它采用了Cortex-M系列的ARM内核,具有高速的时钟频率和丰富的内存空间,使得它能够处理复杂的任务和多个外设的同时操作。
我在实际的开发中,使用STM32处理各种传感器数据、驱动各种执行器等,都能够得到良好的性能。
同时,STM32还支持多核、多任务的处理方式,进一步提高了系统的处理能力。
其次,STM32具有丰富的外设资源。
它具有多个GPIO口、定时器、串口通信接口、I2C、SPI等多种外设,能够满足各种应用的需求。
我在实际的项目中,经常需要使用到串口通信、定时器和GPIO口等,STM32提供了非常简洁方便的API,使得开发工作变得更加简单高效。
同时,STM32还支持中断机制和DMA传输,大大提高了系统的响应速度和数据传输效率。
此外,STM32还具有丰富的开发工具和生态系统。
ST官方提供了STM32CubeMX软件,能够快速生成初始化代码和配置文件,大大提高了开发的效率。
同时,ST还提供了丰富的开发文档和示例代码,以及一系列的开发板和调试工具,方便开发者进行硬件测试和调试。
此外,STM32生态系统还有许多第三方库和开发工具,丰富了开发者的选择和功能。
最后,我认为使用STM32进行开发具有较高的学习门槛。
由于STM32架构较为复杂,对硬件和软件的理解要求较高。
同时,STM32的开发工具和文档也相对复杂,需要一定的学习成本。
对于初学者来说,建议先了解一些基本的电子和嵌入式系统知识,再进行STM32开发。
但是一旦熟悉了STM32的开发流程和API,就能够快速进行项目开发。
综上所述,STM32作为一款强大的微控制器,具有高性能、丰富的外设资源和完善的开发工具,非常适合用于嵌入式系统的开发。
我通过使用STM32进行项目开发,不仅提高了技术水平,也获得了一些实际的应用经验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)、系统启动后启动PVD,并开启相应的中断。
PWR_PVDLevelConfig(PWR_PVDLevel_2V8); // 设定监控阀值
PWR_PVDCmd(ENABLE); // 使能PVD
EXTI_StructInit(&EXTI_InitStructure);
u32 RESERVED3[30];
vu32 IABR[2];
u32 RESERVED4[62];
vu32 IPR[11];
} NVIC_TypeDef;
它们对应ARM手册中的名称为
ISER = Interrupt Set-Enable Registers
2)、选择输出时钟源。
时钟的选择由时钟配置寄存器(RCC_CFGR)中的MCO[2:0]位控制。
RCC_MCOConfig(RCC_MCO);
参数RCC_MCO为要输出的内部时钟:
RCC_MCO_NoClock --- 无时钟输出
RCC_MCO_SYSCLK --- 输出系统时钟(SysCLK)
副优先级(subpriority):
在占先式优先级相同的情况下,高副优先级的中断优先被响应;
在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应——非抢断式响应(不能嵌套)。
2、判断中断是否会被响应的依据
EXTI_Trigger_Falling---表示电压从低上升到高于设定阀值时产生中断;
EXTI_Trigger_Rising_Falling---表示电压上升或下降越过设定阀值时都产生中断。
2)、当工作电压低于设定阀值时,将产生PVD中断,在中断程序中进行相应的处理:
2、SysTick工作原理
Cortex-M3的内核中包含一个SysTick时钟。SysTick 为一个24位递减计数器,SysTick设定初值并使能后, 每经过1个系统时钟周期,计数值就减1。计数到0时, SysTick计数器自动重装初值并继续计数,同时内部的 COUNTFLAG标志会置位,触发中断(如果中断使能)。
参考STM32技术参考手册中的中断向量表,中断源的位置为:
位置0 - WWDG = Window Watchdog interrupt
位置1 - PVD = PVD through EXTI Line detection interrupt
位置2 - TAMPER = Tamper interrupt
void PVD_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line16);
…… // 用户添加紧急处理代码处
}
5、STM32上不使用外部晶振,OSC_IN和OSC_OUT的接法
1)、对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。
首先是占先式优先级,其次是副优先级;
占先式优先级决定是否会有中断嵌套;
Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。
3、STM32中用到的Cortex-M3寄存器说明
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。
操作流程:
1)、启动时钟安全系统CSS: RCC_ClockSecuritySystemCmd(ENABLE); (NMI中断是不可屏蔽的!)
2)外部振荡器失效时,产生NMI中断,对应的中断程序:
void NMIException(void)
{
if (RCC_GetITStatus(RCC_IT_CSS) != RESET)
1、时钟安全系统(CSS)
时钟安全系统被激活后,时钟监控器将实时监控外部高速振荡器;如果HSE时钟发生故障,外部振荡器自动被关闭,产生时钟安全中断,该中断被连接到Cortex-M3的NMI的中断;同时CSS将内部RC振荡器切换为STM32的系统时钟源(对于STM32F103,时钟失效事件还将被送到高级定时器TIM1的刹车输入端,用以实现电机保护控制)。
{ // HSE、PLL已被禁止(但是PLL设置未变)
…… // 客户添加相应的系统保护代码处
// 下面为HSE恢复后的预设置代码
RCC_HSEConfig(RCC_HSE_ON); // 使能HSE
4、可编程电压监测器(PVD)
STM32内部自带PVD功能,用于对MCU供电电压VDD进行监控。通过电源控制寄存器中的PLS[2:0]位可以用来设定监控电压的阀值,通过对外部电压进行比较来监控电源。当条件触发,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。
......
位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt
IPR = Interrupt Priority Registers
每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。
EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD连接到中断线16上
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //使用中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Raising;//电压低于阀值时产生中断
RCC_ITConfig(RCC_IT_HSERDY, ENABLE); // 使能HSE就绪中断
RCC_ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL就绪中断
RCC_ClearITPendingBit(RCC_IT_CSS); // 清除时钟安全系统中断的挂起位
1、GPIO的推动能力
================================ Backup =========================== Reset/Clock Control =======================
u32 RESERVED0[30];
vu32 ICER[2];
u32 RSERVED1[30];
vu32 ISPR[2];
u32 RESERVED2[30];
vu32 ICPR[2];
// 至此,一旦HSE时钟恢复,将发生HSERDY中断,在RCC中断处理程序里, 系统时钟可以设置到以前的状态
}
}
3)、在RCC的中断处理程序中,再对HSE和PLL进行相应的处理。
注意:一旦CSS被激活,当HSE时钟出现故障时将产生CSS中断,同时自动产生 NMI。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中 必须通过设置时钟中断寄存器(RCC_CIR)里的CSSC位来清除CSS中断。
============================ Interrupt/Evens =========================
1、NVIC的优先级概念
占先式优先级 (pre-emption priority):
高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式优先响应,俗称中断嵌套。
3、内部时钟输出PA.8(MCO)
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
1)、设置PA.8为复用Push-Pull模式。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
2)、对于少于100脚的产品,有2种接法:
2.1)、OSC_IN和OSC_OUT分别通过10K电阻接地。
此方法可提高EMC性能。
2.2)、分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'。
此方法可以减小功耗并(相对上面2.1),并节省2个外部电阻。
按照使用外设模块
======================================================================
============================== GPIO/AFIO =============================
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中断线
EXTI_Init(&EXTI_InitStructure); // 初始
EXTI_InitStructure.EXTI_Trigger的赋值可选项:
EXTI_Trigger_Rising---表示电压从高下降到低于设定阀值时产生中断;
ICER = Interrupt Clear-Enable Registers