00-开发环境 MPLAB IDE 配置

MPLAB IDE V8.83

File 菜单简介

  1. New (Ctrl+N)

    • 创建一个新文件,用于编写新的代码。
  2. Add New File to Project...

    • 将新文件添加到当前项目中。
  3. Open... (Ctrl+O)

    • 打开现有文件。
  4. Close (Ctrl+E)

    • 关闭当前打开的文件。
  5. Save (Ctrl+S)

    • 保存当前文件。
  6. Save As...

    • 以新名称保存当前文件。
  7. Save All (Ctrl+Shift+S)

    • 保存所有打开的文件。
  8. Open Workspace...

    • 打开一个工作空间,其中包含多个文件和设置。
  9. Save Workspace

    • 保存当前工作空间的设置和文件。
  10. Save Workspace As...

    • 以新名称保存当前工作空间。
  11. Close Workspace...

    • 关闭当前的工作空间。
  12. Import...

    • 导入文件或设置。
  13. Export...

    • 导出当前文件或设置。
  14. Print (Ctrl+P)

    • 打印当前打开的文件。
  15. Recent Files

    • 查看最近打开的文件列表,便于快速访问。
  16. Recent Workspaces

    • 查看最近打开的工作空间列表,便于快速访问。
  17. Exit

    • 退出MPLAB IDE。

Edit 菜单简介

        以下是具体的选项及其功能:

  1. Undo (Ctrl+Z)

    • 撤销上一个操作。
  2. Redo (Ctrl+Y)

    • 恢复上一个撤销的操作。
  3. Cut (Ctrl+X)

    • 剪切选中的内容并将其放入剪贴板。
  4. Copy (Ctrl+C)

    • 复制选中的内容到剪贴板。
  5. Paste (Ctrl+V)

    • 将剪贴板中的内容粘贴到当前光标位置。
  6. Delete (Del)

    • 删除当前光标位置的字符。
  7. Select All (Ctrl+A)

    • 选择当前文件中的所有内容。
  8. Find... (Ctrl+F)

    • 打开查找对话框,搜索当前文件中的文本。
  9. Find Next (F3)

    • 查找下一个匹配项。
  10. Find in Files... (Ctrl+Shift+F)

    • 在项目中所有文件中查找指定的文本。
  11. Replace... (Ctrl+H)

    • 打开替换对话框,用于在当前文件中查找和替换文本。
  12. Go To... (Ctrl+G)

    • 跳转到指定的行号。
  13. Go To Locator (Ctrl+Q)

    • 快速跳转到特定标记或位置。
  14. Go Backward (Alt+Num 4)

    • 向后跳转到上一次光标位置。
  15. Go Forward (Alt+Num 6)

    • 向前跳转到下一个光标位置。
  16. External DIFF... (Ctrl+Shift+7)

    • 打开外部比较工具以比较文件的不同。
  17. Advanced

    • 包含更复杂的编辑功能或选项,可能包括宏或高级查找功能。
  18. Bookmarks...

    • 管理书签,用于快速跳转到特定位置。
  19. Properties...

    • 打开当前文件或项目的属性设置界面。

 

General 选项卡
  1. Use Tabbed Window

    • 启用选项卡窗口,允许同时打开多个文件,通过选项卡快速切换。
  2. Protect Read Only files

    • 启用此选项后,编辑器将防止对只读文件进行修改,保护文件的内容不被意外更改。
  3. Enable Tag Locators

    • 启用标签定位器,方便在大型项目中快速找到函数或变量的定义。
  4. Enable Color Printing

    • 允许在打印时使用颜色,提升代码的可读性。
  5. Find Wrap Messagebox

    • 启用或者禁用查找时在文本末尾循环的消息框。
  6. Alternates <Home> key action

    • 修改 <Home> 键的使用行为,可能是将其设置为跳转到行首或其他功能。

        此部分的设置主要涉及代码编辑器的显示和编辑功能,帮助开发者更高效地编写和调试代码。

选项说明
  1. Line Numbers

    • 显示行号,方便定位和调试源代码。
  2. Line Wrap

    • 启用行换行功能,当行长度超过窗口宽度时自动换行。
  3. Double Click Toggles Breakpoint

    • 双击行号可以切换断点,方便在调试时快速设置和取消断点。
  4. Repair Mismatched CR/LF on Save

    • 保存文件时自动修复不匹配的换行符(CR与LF),确保文件在不同平台上的兼容性。
  5. Auto Indent

    • 自动进行缩进,保持代码的整齐。
  6. Auto Indent with Brace Placement

    • 在添加括号时自动执行缩进,增强代码的可读性。
  7. Print Line Numbers

    • 在打印代码时打印行号,便于查看和审阅。
  8. Enable Code Folding

    • 启用代码折叠,可以折叠或展开特定的代码块,以简化视图。
  9. Highlight Matched

    • 高亮显示匹配的括号、花括号或其他符号,方便用户更好地理解代码结构。
  10. Close Matched

    • 进行闭合匹配时的额外设置。
Tabs 设置
  • Tab Size (1 - 16)

    • 设置制表符的宽度,通常为4个空格。
  • Insert Spaces

    • 使用空格代替制表符,增加代码在不同环境中的一致性。
  • Keep Tabs

    • 保留制表符,适用于需要使用制表符的代码格式。

        这一部分设置主要针对鼠标悬停功能和自动完成选项,旨在提升编程时的交互性和便利性。

Mouseover 选项
  1. Enable Variable Mouseover Values

    • 启用鼠标悬停时显示变量的值,方便快速查看变量状态。
  2. Show Address in Mouseover

    • 选择是否在悬停时显示变量的内存地址,便于调试和查看数据位置。
  3. Mouseover Active on Debug

    • 在调试模式下启用鼠标悬停功能,使开发人员可以实时查看变量值和状态。
  4. Default Type Format

    • 选择悬浮显示的默认格式,选项包括:
    • Use Watch Preferences:使用“监视”窗口的偏好设置。
    • Hex:以十六进制格式显示。
    • Binary:以二进制格式显示。
    • Decimal:以十进制格式显示。
    • Char:以字符(如果适用)格式显示。
Autocomplete 选项
  1. Enable Autocomplete

    • 启用自动完成功能,帮助快速填充已定义的变量、函数等。
  2. <Ctrl+Space> Activates

    • 使用 Ctrl+Space 快捷键手动激活自动完成。
  3. Autolist Struct members

    • 启用结构体成员的自动列表功能,当输入结构体名称后,会自动显示其成员选项。
  4. Function parameter information

    • 在输入函数名时,显示函数参数的信息,方便用户了解函数调用要求。

 

        这一部分设置焦点集中在编辑器的字体和配色方案上,能够提升代码的可读性和用户的视觉体验。

Fonts 选项
  1. Select Font

    • 点击此按钮选择编辑器使用的字体。合适的字体有助于提高代码的可读性,用户可以根据个人喜好选择适合的字体样式。
  2. National Language Code Page

    • 选择国别语言编码页面,默认选项为:
    • 10008 (MAC - Simplified Chinese GB 2312)
      • 适用于简体中文环境。在含有中文字符的文件中保持编码的一致性。
Colors 选项
  1. Choose Colors

    • 点击此按钮选择各种上下文敏感的颜色设置,例如关键词、注释、字符串等特定代码元素的颜色。这便于开发者通过视觉分辨不同类型的代码,提高可读性。
  2. Default Colors

    • 恢复为默认的颜色设置,便于在不满意现有配色时快速恢复。
  3. User Defined Color File

    • 可以浏览并选择用户自定义的颜色文件,以便于应用特定的颜色配置。通过自定义的文件,用户可以创建符合个人需求的颜色主题。

总结

        设置编辑器的字体和颜色可以显著改善代码的可读性与用户体验。通过合理调整这些选项,开发人员可以创建一个更加舒适和个性化的编程环境,从而提高工作效率。

       这一部分的设置主要涉及编辑器的窗口布局、光标指示及代码块注释的格式,方便用户根据工作习惯调整界面和注释样式。

窗口设置
  1. Non-Tabbed Window Default Width

    • 设置非选项卡窗口的默认宽度,范围为 10 到 80。适合于不使用选项卡时的布局。
  2. Editor and DisAssembly Gutter Width

    • 设置编辑器及反汇编的边距宽度,范围为 3 到 12。此设置影响代码显示区域与行号显示区域之间的空间。
尺寸与标尺设置
  1. Line End Ruler Position

    • 设置行尾标尺的位置,范围为 0(禁用)到 1 到 200。可以帮助开发人员在编辑时监控行的长度。
  2. Ruler Color

    • 设置行尾标尺的颜色,便于视觉区分和指引。
调试器设置
  1. Debugger PC Location - Highlight Full Line

    • 设置调试器程序计数器(PC)位置的显示,选择高亮整行,便于调试时明确当前执行位置。
  2. Full Line Color

    • 选择高亮显示的颜色,增加调试过程中的可读性。
注释格式设置
  1. Format Block Comment

    • 设置代码块注释的格式化选项。
  2. Block Comment Length

    • 设置块注释的长度,范围为 10 到 200。这个长度设定有助于保持注释的清晰,确保不影响代码的可读性。

        这个部分的菜单设置主要涉及不同视图和工具栏的开启与管理。通过选择不同的视图,开发者可以在编码和调试过程中快速访问所需的信息。

项目视图
  1. Project

    • 显示当前项目的信息和结构,便于开发者查看文件和模块的组织。
  2. Output

    • 显示编译和运行过程中的输出信息,包括编译错误、警告信息等,帮助开发者快速定位问题。
工具栏设置
  • Toolbars
    • 允许用户选择和显示不同的工具栏,以便快速访问常用功能。
设备和内存相关视图
  1. CPU Registers

    • 显示当前CPU寄存器的状态,方便进行底层调试。
  2. Call Stack

    • 显示当前调用堆栈,帮助开发者理解函数调用的顺序和状态。
  3. Disassembly Listing

    • 显示反汇编代码,便于开发者查看生成的汇编指令。
  4. EEPROM

    • 显示电可编程只读存储器(EEPROM)数据,便于访问和修改存储的数据。
  5. File Registers

    • 显示文件寄存器的内容,供调试使用。
  6. Flash Data

    • 提供对闪存中数据的访问,适用于查看和调试存储在闪存中的信息。
  7. Hardware Stack

    • 显示硬件堆栈的状态,帮助调试时查看函数调用和返回的信息。
  8. LCD Pixel

    • 显示LCD屏幕的像素信息,用于调试和测试显示系统。
  9. Locals

    • 显示当前作用域内的局部变量,便于调试。
  10. Memory

    • 显示当前内存的数据状态,帮助进行内存管理。
  11. Program Memory

    • 显示程序存储器的内容,供调试和验证用途。
  12. SFR / Peripherals

    • 显示特殊功能寄存器及外设状态,便于了解硬件的工作状态。
  13. Special Function Registers

    • 显示特殊功能寄存器的信息,便于监控和调试硬件特性。
  14. Watch

    • 启用监视窗口,实时监控特定变量或内存位置的变化。
  15. Memory Usage Gauge

    • 显示内存使用情况的指示器,帮助开发者管理资源。

 

Project 菜单简介

        这一部分的菜单设置主要围绕项目管理和构建流程,用户可以创建、打开、编译和保存项目,以便于高效地进行嵌入式开发。

项目管理
  1. Project Wizard...

    • 启动项目向导,帮助用户快速创建新项目。
  2. New...

    • 创建一个新项目,可以根据需要进行配置。
  3. Open...

    • 打开现有项目,方便继续工作。
  4. Close

    • 关闭当前项目,不会影响已保存的文件。
  5. Set Active Project

    • 在多项目环境中选择当前活动的项目。
构建流程
  1. Quickbuild (no .asm file)

    • 快速构建项目,不生成汇编文件,适用于快速测试。
  2. Package in .zip

    • 将项目打包为 ZIP 文件,便于共享或备份。
  3. Clean

    • 清理项目,删除中间文件和构建结果,释放空间。
  4. Build (Ctrl+F10):

    • 执行构建操作,编译当前项目,生成可执行文件。
  5. Rebuild

    • 重新构建项目,删除所有旧的构建文件并重新编译。
  6. Build Configuration

    • 设置构建配置,选择不同的编译选项或目标。
  7. Build Options...

    • 访问更详细的构建选项,便于进行个性化配置。
项目保存与文件管理
  1. Save Project

    • 保存当前项目的状态。
  2. Save Project As...

    • 将项目另存为新文件,创建项目的副本。
  3. Add Files to Project...

    • 向当前项目添加新的源文件,便于项目扩展。
  4. Add New File to Project...

    • 创建并添加新文件到当前项目。
  5. Remove File From Project

    • 从项目中移除选定的文件。
语言与版本控制设置
  1. Select Language Toolsuite...

    • 选择使用的语言工具集,便于支持多种编程语言的开发。
  2. Set Language Tool Locations...

    • 设置所用工具的路径。
  3. Version Control...

    • 访问版本控制选项,用于管理项目的版本和历史记录。

 

Debugger 菜单简介

        这个菜单主要用于选取调试工具和管理内存,帮助开发者在调试过程中选择合适的工具并清理内存,从而确保顺利调试。

选择调试工具
  1. Select Tool
    • 允许开发者选择当前项目所使用的调试工具。可选择的选项包括:
      • None:不使用任何调试工具。
      • Proteus VSM:使用Proteus进行虚拟仿真调试。
      • MPLAB SIM:使用MPLAB的模拟器进行调试。
      • PICkit 2:使用PICkit 2进行编程和调试。
      • MPLAB ICD 3:使用MPLAB的调试器ICD 3进行实时调试和编程。

选择合适的调试工具可以根据项目需求,确保调试的有效性。

 

Clear Memory 菜单简介

这一部分的菜单选项主要用于管理和清理不同类型的内存。对于嵌入式系统开发,确保内存的状态清晰是至关重要的,这可以帮助开发者更有效地进行调试和测试。

清理内存选项
  1. Clear Memory
    • 允许开发者选择特定内存区域进行清除,以恢复到干净的状态。这对于调试过程中的内存管理尤为重要。

    • All Memory

      • 清除所有内存区域,包括程序存储器、通用寄存器、EEPROM、闪存数据和配置位。
    • Program Memory

      • 专门清除程序存储器的数据,通常用于重置加载的程序代码。
    • GPRs (General Purpose Registers)

      • 清除通用寄存器的内容,这对于保证变量的初始状态尤为重要。
    • EEPROM

      • 清除电可编程只读存储器(EEPROM)中的数据,在测试过程中确保没有残留的旧数据干扰。
    • Flash Data

      • 删除闪存中的数据,适用于测试和验证不同的程序版本或配置。
    • Configuration Bits

      • 清除配置位,通常用于恢复默认设置,以便重新配置系统参数。

 

Tools 菜单简介

        这个菜单包含了一些辅助工具,能够提高开发效率和代码质量,特别是在嵌入式系统的开发和调试过程中。

可用工具选项
  1. Matlab/Simulink

    • 集成Matlab和Simulink,这对于进行复杂的系统建模、仿真和代码生成非常有帮助。开发者可以使用高级算法,并将其转化为可用于单片机的代码。
  2. Gimpel PC-Lint/MISRA

    • 使用PC-Lint进行代码静态分析和MISRA C规范检查。这有助于确保代码遵循最佳实践和行业标准,提高代码的安全性和可维护性。
  3. DMCI - Data Monitor Control Interface

    • 数据监控控制接口,允许开发者实时监控数据流,支持调试和系统分析,便于跟踪程序运行时的状态。
  4. MPLAB Macros

    • MPLAB宏功能,允许开发者使用宏来简化常见的编程任务,提升开发效率。
  5. AN908 ACIM Tuning Interface

    • 提供ACIM(交流感应电动机)调试和调谐的接口,专用于与电动机控制相关的应用,这对于嵌入式电机控制系统的开发尤为重要。

 

Configure 菜单简介

        Configure 菜单允许用户对开发环境和项目进行各种设置,以确保开发过程符合特定项目的需求。这些选项包括设备的选择、配置位的设置、外部存储器的配置等。

配置选项
  1. Select Device

    • 选择当前项目所使用的单片机型号。这是设置开发环境的第一步,因为不同的单片机具有不同的硬件特性和功能。
  2. Configuration Bits

    • 设置配置位,这些位定义了单片机的工作模式,例如启动设置、时钟配置及其他硬件设置。这将影响设备的整体功能和性能。
  3. External Memory

    • 配置外部存储器选项,允许开发者设置外部RAM或ROM的使用方式。这对于需要更多存储空间的应用尤为重要。
  4. ID Memory

    • 访问或配置设备的身份内存(ID Memory),这通常用于存储设备的唯一标识符或其他关键参数。
  5. Settings

    • 访问整体开发环境的设置,包括工具链的配置、编译选项和其他环境相关的设置。这可以根据项目需求进行个性化调整。

 

Configuration Bits 详解

        配置位是单片机的重要设置,定义了设备的工作模式和行为。这一部分展示了常见配置位的地址、值、功能和分类,有助于开发者理解每个配置位的作用。

配置位说明表
AddressValueFieldCategory
20072FE2FOSCOscillator Selection bits
WDTEWatchdog Timer Enable bit
PWRTEPower-up Timer Enable bit
MCLRERE3/MCLR pin function select bit
CPCode Protection bit
CPDData Code Protection bit
BORENBrown Out Reset Selection bits
IESOInternal External Switchover bit
FCMENFail-Safe Clock Monitor Enabled bit
LVPLow Voltage Programming Enable bit
20083FFFBOR4VBrown-out Reset Selection bit
WRTFlash Program Memory Self Write Enable
配置位解读
  1. FOSC (Oscillator Selection bits)

    • 设置振荡器的类型和频率,需要根据具体的应用需求选择适当的配置。
  2. WDTE (Watchdog Timer Enable bit)

    • 启用或禁用看门狗定时器,以防止系统死锁。启用时,系统会自动复位如果软件没有及时清除定时器。
  3. PWRTE (Power-up Timer Enable bit)

    • 功能是启用上电定时器,确保在设备上电时有保证的启动时间。
  4. MCLRE (RE3/MCLR pin function select bit)

    • 选择MCLR引脚或RE3引脚的功能,以满足不同的硬件设计需求。
  5. CP (Code Protection bit)

    • 启用代码保护,防止程序代码被读取或修改。
  6. CPD (Data Code Protection bit)

    • 数据保护位,保护EEPROM数据不被读取。
  7. BOREN (Brown Out Reset Selection bits)

    • 配置电压骤降复位选项,确保在供电降至特定值时,设备会进行复位。
  8. IESO (Internal External Switchover bit)

    • 选择在开机时使用内部或外部振荡器。
  9. FCMEN (Fail-Safe Clock Monitor Enabled bit)

    • 启用故障安全时钟监控,确保系统在时钟故障时能够正常操作。
  10. LVP (Low Voltage Programming Enable bit)

    • 激活低电压编程模式,以便在较低电压下对设备进行编程。
  11. BOR4V (Brown-out Reset Selection bit)

    • 配置额外的电压复位选项,更好地管理供电异常。
  12. WRT (Flash Program Memory Self Write Enable)

    • 启用程序存储器自写入功能,在必要时允许对闪存进行编程。

振荡器类型选择详解

        在配置位中,振荡器的选择影响整个系统的时钟源和运行稳定性。不同的振荡器类型适用于不同的应用场景和性能要求。

振荡器选项解释
  1. HS Oscillator (高速度晶体/谐振器)

    • 使用高速度的晶体或谐振器,工作在RA6/OSC2/CLKOUT和RA7/OSC1/CLKIN引脚上,适合需要高频和快速响应的应用。
  2. RC Oscillator (电阻电容振荡器)

    • 在RA6/OSC2/CLKOUT引脚上选择CLKOUT功能,RA7/OSC1/CLKIN引脚上配置RC,用于低成本的应用,但频率稳定性和精度不如晶体振荡器。
  3. RCIO Oscillator (I/O功能的RC振荡器)

    • 类似于RC振荡器,但允许RA6/OSC2/CLKOUT引脚输出I/O功能,灵活性高。
  4. INTOSC Oscillator (内部振荡器)

    • 允许RA6/OSC2/CLKOUT引脚输出CLKOUT,RA7/OSC1/CLKIN引脚提供I/O功能,适用于对时钟源要求灵活而不高的应用。
  5. INTOSCI Oscillator (内部振荡器,I/O功能)

    • 类似INTOSC振荡器,但RA6/OSC2/CLKOUT引脚用于I/O功能,适合需要更多引脚功能的应用。
  6. EC Oscillator (外部时钟振荡器)

    • RA6/OSC2/CLKOUT引脚和RA7/OSC1/CLKIN用于外部时钟源,适用于对时钟精度要求较高的应用。
  7. XT Oscillator (晶体振荡器)

    • 使用晶体或谐振器连接到RA6/OSC2/CLKOUT和RA7/OSC1/CLKIN,引脚的简单配置,适合标准应用。
  8. LP Oscillator (低功耗晶体振荡器)

    • 使用低功耗晶体,适合电池供电或功耗敏感应用,确保长时间使用而不增加功耗。

Watchdog Timer (WDT) 配置

        看门狗定时器(WDT)是使微控制器在发生故障时能够重新复位并恢复正常工作的关键组件。它能防止系统死锁和不可预知的行为。

WDT 状态及配置
  1. WDT Disabled (禁用)

    • 当WDT处于禁用状态时,系统不会使用看门狗定时器。此状态下,程序运行不会受到WDT的影响。
    • WDT可通过WDTCON寄存器中的SWDTEN位进行启用。这意味着在需要时,可以动态地开启看门狗定时器,以确保系统的稳定性。
  2. WDT Enabled (启用)

    • 当WDT处于启用状态时,微控制器将在指定的时间内监控程序执行。如果程序未在规定时间内刷新看门狗定时器,则系统将自动复位。
    • 启用看门狗定时器时,开发者需要确保在主程序中定期清除(或“喂养”)WDT,以防止不必要的复位。

WDT的重要性

  • 防止程序死锁:WDT确保程序在发生异常或死锁时能自动复位,从而提高系统的容错能力。
  • 系统稳定性:通过及时复位,可以确保设备在错误状态下不会长时间停留,确保用户或系统的正常操作。

实践建议

  • 在开发过程中,测试程序的各个模块,确保所有可能的异常都能及时被WDT捕捉。
  • 若禁用WDT,确保系统的其他防护措施到位,以防止系统出现崩溃或死锁。
  • 在产品最后的发布版本中,适当考虑WDT的启用状态,以提高产品的性能和可靠性。

Power-up Timer (PWRT) 配置

        Power-up Timer(PWRT) 是用于延迟单片机启动的功能,确保在上电或复位后系统能够稳定运行。

PWRT 状态及配置
  1. PWRT Enabled (启用)

    • 启用PWRT后,单片机在上电时将会等待一段时间(通常为几百毫秒),以确保电源稳定后再进行初始化。这对于防止在电源不稳定时产生误操作或不稳定状态非常重要。
    • 适用于对电源噪声敏感的系统,能有效提高系统的可靠性。
  2. PWRT Disabled (禁用)

    • 禁用PWRT时,单片机在上电后会立即开始执行代码,不会等待电源稳定。此状态可能导致在电源未完全稳定时,单片机出现不可预知的行为。
    • 适合于对启动延迟没有要求且电源稳定性可靠的应用。

PWRT的重要性

  • 系统稳定性:通过引入延迟,可以确保在单片机开始执行代码之前,所有电源线路和外设都已经达到工作状态。
  • 防止启动错误:启用PWRT后,可以有效防止由于电源不稳定导致的启动错误,确保系统稳定运行。

实践建议

  • 在设计和实施项目时,考虑PWRT的启用状态,以适应具体应用的需求。
  • 如果系统对启动速度没有严格要求,建议启用PWRT以提高系统的抗干扰能力。
  • 在PWRT启用的情况下,注意优化代码,使得在启动后代码执行能够尽量快,以减少系统的启动时间。

MCLR 引脚配置

        MCLR引脚 是微控制器中用于复位的关键引脚,通常被配置为外部复位的输入信号。

MCLR 引脚功能解释
  1. RE3/MCLR 引脚功能

    • 作为MCLR功能:当引脚配置为复位功能时,外部信号可以使微控制器复位。当引脚接收到高电平信号时,微控制器将复位。
    • 内部连接到VDD:如果MCLR引脚未连接外部信号,通常可以将其内部连接到电源(VDD),确保复位功能在没有外部干预时依然能够保持高电平。
  2. 数字输入

    • 在某些配置下,RE3引脚可作为数字输入引脚使用。这意味着它可以用于读取外部信号,但在此模式下,复位功能将被禁用。

使用建议

  • 复位功能应用

    • 在需要外部复位的应用中,确保MCLR引脚连接到适当的电路,以便在必要时触发复位。
    • 可使用按键或其他外部电路将引脚拉低,以实现手动复位。
  • 数字输入配置

    • 如果采用数字输入模式,请确认该引脚的电气特性符合其他元件的需求,避免不必要的干扰。

程序存储器代码保护

        程序存储器代码保护是一项关键特性,旨在防止未经授权的访问和篡改微控制器中的程序代码。根据项目需求,可以选择启用或禁用代码保护。

代码保护状态
  1. 代码保护禁用

    • 当代码保护被禁用时,微控制器中的程序存储器内容可以通过编程工具直接读取。这在开发阶段是有用的,因为开发者可以方便地调试和更新程序。
    • 然而,禁用代码保护会使得代码容易被逆向工程或窃取,存在一定的安全风险。
  2. 代码保护启用

    • 启用代码保护后,程序存储器中的代码会受到保护,无法通过编程工具直接读取。这为最终产品提供了额外的安全性,防止竞争对手获取代码或对其进行修改。
    • 启用后,任何更改都必须通过再次编程完成,可能导致开发和调试过程变得复杂。

使用建议

  • 开发阶段

    • 在开发和调试阶段,建议禁用代码保护,以便迅速进行代码的测试和修改。
  • 产品发布前

    • 在产品发布之前,务必启用代码保护,确保最终产品的知识产权安全。
  • 定期评估

    • 根据产品生命周期和市场需求,定期评估代码保护策略,动态调整保护状态,以适应不同阶段的安全需求。

数据存储器代码保护

        数据存储器代码保护是一项重要功能,用于防止对微控制器内部数据存储器的未经授权访问和篡改。这项保护措施对于保持数据安全性至关重要。

数据存储器代码保护状态
  1. 代码保护禁用

    • 当数据存储器代码保护被禁用时,外部程序或用户可以直接访问和修改数据存储器的内容,这便于调试和测试。
    • 然而,禁用状态可能导致数据的安全性降低,尤其是当涉及敏感信息时,容易受到攻击或篡改。
  2. 代码保护启用

    • 启用数据存储器代码保护后,微控制器内部的数据存储器将受到保护,外部访问将被限制。这有效地防止了对重要数据的未授权访问。
    • 启用此保护后,编程和数据更新过程将变得更加复杂,可能需要更为严谨的管理和流程控制。

使用建议

  • 在开发阶段

    • 开发阶段可考虑禁用数据存储器保护,以便快速进行程序调试和数据验证。
  • 在产品发布阶段

    • 在发布产品之前,启用数据存储器代码保护,以避免敏感数据被篡改或泄露。
  • 监控和评估

    • 随着产品生命周期和市场环境的变化,定期评估数据存储器保护措施,确保在不同的阶段都能有效保护数据。

BOR(Brown-out Reset)功能

        BOR 是一种确保微控制器在电源电压不足时可靠复位的机制,以防止系统在不稳定条件下运行。它是嵌入式系统设计中的一个重要安全特性。

BOR 状态与配置
  1. BOR Enabled(启用)

    • 当BOR功能被启用时,微控制器在操作过程中会监测电源电压。如果电压下降到预设的阈值,系统会立即复位以保护数据和硬件。
    • 在休眠模式下,BOR会被禁用,以降低能耗。
  2. BOR 在操作过程中启用,休眠时禁用

    • 此状态允许微控制器在正常工作时受BOR保护,而在休眠状态下关闭BOR以节省电力。
    • 用户通过配置 PCON 寄存器中的 SBOREN 位来控制BOR功能,这为设计提供了灵活性。
  3. BOR Disabled(禁用)

    • 当BOR禁用时,微控制器不监测电源电压。这在某些不需要复位的应用中可能是合适的,但也存在风险,当电源电压不稳定时,系统可能会出现错误行为。

使用建议

  • 启用 BOR

    • 在对电源电压敏感的应用中强烈建议启用BOR,以防止由于电压下降导致的系统不稳定。
  • 休眠模式配置

    • 若系统设计需要长时间处于休眠状态,可以利用BOR在休眠时禁用,以优化能耗。
  • 关注系统需求

    • 根据系统对电压稳定性的具体需求,合理配置BOR的状态,确保在实际应用中达到系统安全与能效的平衡。

内部/外部切换模式

        内部/外部切换模式是在某些微控制器中用于电源管理的特性。这允许系统在不同电源源之间进行切换,以确保稳定性和可靠性,尤其是在电源不稳定或需要供电冗余的应用中。

切换模式状态
  1. 切换模式启用

    • 当该模式启用时,微控制器可以在内部和外部电源之间自动切换。在内部电源(如电池供电)不足时,系统可以利用外部电源(如直流电源)继续运行,确保设备始终有电源供应。
    • 这种模式增强了系统的灵活性和抗故障能力,特别适合需要高可靠性的应用。
  2. 切换模式禁用

    • 当切换模式被禁用时,微控制器只能依赖所选定的电源源。这可能在某些简单应用中是合适的,但会增加系统在电源故障情况下停止工作的风险。

使用建议

  • 启用切换模式

    • 在对电源可靠性有高要求的应用中,建议启用内部/外部切换模式,以提高系统的可用性。
  • 配置电源优先级

    • 在启用模式时,可以配置电源的优先级,以优化能耗和性能。例如,先使用外部电源,只有在外部电源失效时才切换到内部电源。
  • 监测电源状态

    • 考虑加入电源状态监测功能,以便及时响应电源变化并做出切换。

失效安全时钟监控(Fail-Safe Clock Monitor)

        失效安全时钟监控(FSMC)是一项保护措施,用于确保微控制器在时钟信号发生故障或异常时能够保持稳定和可靠的操作。这项功能在运行关键任务或需要高可靠性的应用中尤其重要。

监控状态
  1. 失效安全时钟监控启用

    • 启用时,微控制器会持续监控时钟信号。在检测到时钟信号异常(如频率低于或高于设定范围)时,系统会自动触发复位或采取保护措施,以防止潜在的系统故障或数据损坏。
    • 这增强了系统的可靠性,确保设备在时钟故障时不会进入不确定状态。
  2. 失效安全时钟监控禁用

    • 禁用此功能后,微控制器将不再监测时钟信号的稳定性。这可能在某些简单或对时钟稳定性要求不高的应用中合适,但在面临突发中断时会增加系统故障的风险。

使用建议

  • 启用失效安全时钟监控

    • 在对系统安全性和可靠性要求高的应用中,建议启用FSMC,以确保在时钟出现故障时能够及时响应。
  • 评估系统特性

    • 根据具体应用的需求评估是否需要启用该功能,如在关键控制系统、医疗设备等场合,不容忽视。
  • 定期测试监控功能

    • 在开发和测试阶段,定期验证失效安全时钟监控功能的有效性,以确保在实际操作中可以可靠工作。

RB3/PGM 引脚功能

RB3/PGM 引脚在微控制器中起到了编程和数字输入/输出的双重功能。这种设计为开发者提供了灵活性,在编程和正常操作间进行切换。

引脚状态说明
  1. 低电压编程启用

    • 当RB3引脚被设置为编程模式时,低电压编程(LVP)功能将被启用。此模式允许在较低电压下对微控制器进行编程,降低了编程时对设备的电压要求,使编程更加方便。
    • 在使用LVP时,开发者可以通过特殊的串口开发工具进行编程,避免了高电压编程所需的复杂设置。
  2. RB3引脚数字输入/输出功能

    • RB3引脚在非编程状态时可用于数字输入或输出。这使得该引脚在正常操作时可以用于控制其他设备或获取传感器数据,提高了系统的功能性。
    • 如果选择使用该引脚为数字I/O,则需要确保配置正确,以避免编程过程中的冲突。
  3. 高电压编程要求

    • 当RB3引脚用于数字I/O时,编程时必须将MCLR引脚设置为高电压(HV)。这意味着编程和正常操作之间需要进行合理的切换和管理,以确保在编程时能够正确识别MCLR引脚状态。

使用建议

  • 在需要时启用低电压编程

    • 在进行开发和调试时,考虑启用低电压编程,以简化编程流程。在产品进入生产阶段后,可能考虑采用高电压编程以确保最大可靠性。
  • 正确配置引脚状态

    • 开发者在设计电路时应确保RB3的配置符合应用需求,避免在使用数字I/O功能时不小心触发编程模式。
  • 注意高电压编程环境

    • 在进行高电压编程时,确保MCLR引脚处于适当的高电压状态,以避免编程失败或引脚损坏。

Brown-out Reset(BOR)电压设置

        Brown-out Reset(BOR)是一种保护机制,用于确保微控制器在电源电压低于设定阈值时自动复位。通过设置不同的BOR电压级别,可以根据应用需求优化系统的稳定性和可靠性。

电压设置说明
  1. BOR 设置为 2.1V

    • 当BOR设置为 2.1V 时,微控制器会在电源电压降至 2.1V 以下时触发复位。这种较低的阈值适用于对电源稳定性要求较高的应用,能够在电源波动或突然下降时快速保护系统,防止数据损坏或系统故障。
  2. BOR 设置为 4.0V

    • 将BOR设置为 4.0V 时,微控制器将在电源电压降至 4.0V 以下时触发复位。这一较高的设置适用于需要在更高电压下运行的设备,确保在电源电压下降到一个相对安全的水平之前保持运行,适合那些不容易受到轻微电压波动影响的应用。

使用建议

  • 根据应用场景选择电压设置

    • 在选择BOR电压时,开发者应考虑具体应用的需求。例如,某些低功耗设备可能更适合将BOR设置为较低电压,而对电源稳定性要求更高的设备则应设置为较高的阈值。
  • 评估电源特性

    • 在设置BOR之前,应仔细评估电源的特性及负载条件,以选择合适的电压阈值,确保微控制器在所有负载和环境条件下都能稳定工作。
  • 测试和验证

    • 在产品开发过程中,进行充分的测试和验证,以确保在设置的BOR阈值下,系统能够按预期进行复位并恢复正常操作。

写保护机制

        在微控制器中,写保护机制用于控制哪些内存区域可以被写入,以防止重要数据或程序代码被意外修改。根据不同的内存地址范围,特别是 EEPROM 内存的配置,可以设置不同的写保护策略。

写保护状态说明
  1. 保护区域

    • 0000h 到 OFFFh:此区域被写保护,意味着此范围内的数据无法被写入或修改,为保护设备的关键参数。
    • 1000h 到 1FFFh:此区域可以通过 EEPROM 控制器(EECON)进行修改,提供灵活性以便对特定数据进行更新。
    • 0800h 到 1FFFh:同样,此区域允许通过 EECON 修改,便于在特定情况下进行数据更新。
    • 0000h 到 00FFh:此区域也被写保护,确保基本系统参数的保护。
  2. 写保护关闭

    • 当报告“Write protection off”时,表示写保护机制已关闭,可以自由地对相应的内存区域进行写入操作。这为调试和开发提供了便利,但应在生产阶段谨慎对待,以防重要数据的意外修改。

使用建议

  • 合理配置写保护区域

    • 开发者在设定写保护时,应根据系统的实际需求,决定哪些区域需要保护,哪些区域可以开放给用户写入,以平衡安全性与灵活性。
  • 审慎操作写保护功能

    • 在修改写保护状态时,需确保操作的严谨性。特别是在生产模式下,建议始终保持关键区域的写保护,以避免数据损坏。
  • 应急措施

    • 考虑在设计中引入应急措施,例如在写保护关闭时,增加数据验证机制,确保写入的数据正确无误。

 

 开发环境窗口设置

        在嵌入式系统开发过程中,集成开发环境(IDE)的窗口管理可以显著提高开发效率。上面显示的窗口设置包括一系列功能和文件管理选项,适合于微控制器的编程和调试。

窗口功能说明
  1. Close All

    • 关闭所有打开的窗口,这是一个快速清理工作区的选项,适合于在进行新的项目时恢复整洁的工作环境。
  2. Cascade / Tile (Horizontal/Vertical) / Arrange Icons

    • 这些选项用于管理在开发环境中打开的窗口布局,以便于开发者能够快速访问不同的文件和调试信息。
  3. Window Sets

    • 允许用户创建和管理窗口集,可以根据不同的工作流和项目需求保存特定的窗口布局。
  4. Configuration Bits (配置位)

    • 此选项列出了当前配置位设置,包括_PIN配置、时钟选项、功耗以及其他设备特定的设置。
    • 开发者可以在这一部分进行必要的配置,以确保微控制器的正确初始化和功能。
  5. 文件路径

    • 显示当前项目中的源代码文件路径(例如 D:\2025\A000_887_INIT_LED\pic16f887_platform_000.C),对于快速定位文件十分有用。
    • 每一个文件可能负责不同功能,开发者可以根据需求进行切换和编辑。
  6. Output(输出)

    • 指出输出窗口,用于显示编译结果、警告和错误信息,帮助开发者快速调试和解决问题。
  7. Watch(监视)

    • 监视窗口用于观察变量和系统状态,尤其在调试过程中,可以实时监控特定数据的变化。

使用建议

  • 善用窗口布局

    • 根据个人习惯和项目要求,自定义窗口布局,提升开发效率。
  • 管理配置位设置

    • 确保在每次编译之前检查和更新配置位设置,以确保微控制器正确初始化。
  • 保持清晰的文件结构

    • 在项目中使用清晰、组织良好的文件结构,便于后续的维护与开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462782.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Apple Vision Pro上打造成功的沉浸式叙述应用

随着科技的进步,沉浸式叙述应用正在成为一种全新的娱乐方式。Apple Vision Pro的发布,标志着空间计算技术迈上了新的台阶。本文将探讨如何在Vision Pro上构建一款类似Encounter Dinosaur的沉浸式叙述应用,具体通过分析《Out There》这款作品,总结出一系列关键点,帮助创作者…

Linux练习作业

1.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 2.配置从DNS服务器&#xff0c;对主dns服务器进行数据备份 环境准备 主从服务器都需要进行的操作#关闭防火墙、SELinnux systemctl stop firewalld setenforce 0#软件安装 yum install bind -y实验一&#…

计算机网络:网络层 —— IP 多播技术

文章目录 基本概念IP多播地址和多播组 IP多播的类型硬件多播将IPv4多播地址映射为多播MAC地址 基本概念 多播&#xff08;Multicast&#xff0c;也称为组播&#xff09;是一种实现“一对多”通信的技术&#xff0c;允许一台或多台主机&#xff08;多播源&#xff09;发送单一数…

掌握AI Prompt的艺术:如何有效引导智能助手

开头叙述&#xff1a; 在人工智能的世界里&#xff0c;Prompt&#xff08;提示&#xff09;是沟通人类意图与机器理解之间的桥梁。它不仅是一串简单的文字&#xff0c;而是一把钥匙&#xff0c;能够解锁AI模型的潜力&#xff0c;引导它们执行复杂的任务。本文将探讨Prompt的重…

[SAP ABAP] SMW0上传模板

通常来说&#xff0c;一个批量导入的程序必须使用指定的模板&#xff0c;我们需要将模板保存到SAP系统中&#xff0c;以便用户下载并更改。这里我们可以使用事务码SMW0解决上述的问题 1.选择二进制类型 2.输入存放的包 3.创建对象 选择需要进行上传的本地模板文件到SAP系统中 …

第二十六章 Vue之在当前组件范围内获取dom元素和组件实例

目录 一、概述 二、获取dom 2.1. 具体步骤 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.3. BaseChart.vue 三、获取组件实例 3.1. 具体步骤 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. BaseForm.vue 3.3. 运行效果 一、概述 我们过去在想要获取一…

基于树莓派的安保巡逻机器人--(一、快速人脸录入与精准人脸识别)

目录 零、前言 一、人脸检测 二、人脸识别 1、采集人脸 2、训练人脸识别模型 3、人脸识别应用 零、前言 随着智能安防需求的增长&#xff0c;基于人工智能和物联网的安保系统逐渐成为趋势。树莓派因其低成本、高扩展性等特点&#xff0c;成为很多AI项目的理想平台。本文将为大…

软件测试学习笔记丨Flask操作数据库-对象与数据模型

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23440 对象与数据模型 数据模型&#xff1a;是数据特征的抽象&#xff0c;抽象层次上描述了系统的静态特征、动态行为和约束条件&#xff0c;为数据库系统的信息表示与操作提供一个抽象的框架…

信号量本质 信号量实验(控制车辆运行,优先级反转)互斥量

信号量本质 前面介绍的队列(queue)可以用于传输数据&#xff1a;在任务之间、任务和中断之间。 消息队列用于传输多个数据&#xff0c;但是有时候我们只需要传递状态&#xff0c;这个状态值需要用一个 数值表示&#xff0c;比如&#xff1a; ⚫ 卖家&#xff1a;做好了 1 …

【STL_list 模拟】——打造属于自己的高效链表容器

一、list节点 ​ list是一个双向循环带头的链表&#xff0c;所以链表节点结构如下&#xff1a; template<class T>struct ListNode{T val;ListNode* next;ListNode* prve;ListNode(int x){val x;next prve this;}};二、list迭代器 2.1、list迭代器与vector迭代器区别…

VLAN间通信以及ospf配置

目录 1.基础知识介绍 1.1 什么是VLAN&#xff1f; 1.2 VLAN有什么用&#xff1f; 1.3 不同VLAN如何实现通信&#xff1f; 1.4 什么是路由汇总&#xff1f; 1.4.1 路由汇总的好处&#xff1a; 2. 实验 2.1 网络拓扑设计 2.2 实验配置要求 2.2.1 三层交换配置&#xff…

UE4_Niagara基础实例—13、通过纹理采样来创造粒子

效果&#xff1a; 知识点&#xff1a; 1、纹理采样目前仅支持GPU粒子运行&#xff08;Texture sampling is only supported on the GPU at the moment.&#xff09; 2、网格位置输出每个粒子在网格中的归一化位置。我们使用该值来采样纹理&#xff0c;就像它是UV一样&#xff…

前段(vue)

目录 跨域是什么&#xff1f; SprinBoot跨域的三种解决方法 JavaScript 有 8 种数据类型&#xff0c; 金额的用什么类型。 前段 区别 JQuery使用$.ajax()实现异步请求 Vue 父子组件间的三种通信方式 Vue2 和 Vue3 存在多方面的区别。 跨域是什么&#xff1f; 跨域是指…

基于SpringBoot+Vue实现智能停车收费系统

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

私有化视频平台EasyCVR海康大华宇视视频平台视频诊断技术是如何实时监测视频质量的?

在现代视频监控系统中&#xff0c;确保视频流的质量和稳定性至关重要。随着技术的进步&#xff0c;视频诊断技术已经成为实时监测视频质量的关键工具。这种技术通过智能分析算法对视频流进行实时评估和处理&#xff0c;能够自动识别视频中的各种质量问题&#xff0c;并给出相应…

Linux云计算 |【第五阶段】CLOUD-DAY10

主要内容&#xff1a; 部署Dashboard、部署Prometheus、部署HPA集群 一、Dashboard介绍 Dashboard是基于网页的Kubernetes用户界面&#xff0c;可以使用Dashboard将容器应用部署到Kubernetes集群中&#xff0c;也可以对容器应用排错&#xff0c;还能管理集群资源。可以使用Da…

无人机避障——4D毫米波雷达Octomap从点云建立三维栅格地图

Octomap安装 sudo apt-get install ros-melodic-octomap-ros sudo apt-get install ros-melodic-octomap-msgs sudo apt-get install ros-melodic-octomap-server sudo apt-get install ros-melodic-octomap-rviz-plugins # map_server安装 sudo apt-get install ros-melodic-…

【GIN】go-gin 中 validator 验证功能

文章目录 前言一、基础用法二、常用字段说明常用字段说明1. required2. len3. min 和 max4. gte 和 lte 、 gt 和 lt 、ne5. oneof6. email7. url 三、示例代码运行效果 总结 前言 在 Go 中使用 Gin 框架时&#xff0c;BindJSON 可以将 JSON 请求体中的数据绑定到结构体上&…

使用Jupyter Notebook进行数据科学项目

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Jupyter Notebook进行数据科学项目 Jupyter Notebook 简介 安装 Jupyter Notebook 创建和管理 Notebook 编写和运行代码 示例…

【MyBatis源码】CacheKey缓存键的原理分析

文章目录 Mybatis缓存设计缓存KEY的设计CacheKey类主体CacheKey组成CacheKey如何保证缓存key的唯一性 Mybatis缓存设计 MyBatis 每秒过滤众多数据库查询操作&#xff0c;这对 MyBatis 缓存键的设计提出了很高的要求。MyBatis缓存键要满足以下几点。 无碰撞&#xff1a;必须保证…