mirror of
https://github.com/goldenfishs/MRobot.git
synced 2026-02-04 18:00:19 +08:00
添加ioc和自动任务
This commit is contained in:
parent
4a3e0d8391
commit
21052cf0a7
@ -2,8 +2,11 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QStackedWidget, QSizePolicy
|
|||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from qfluentwidgets import PushSettingCard, FluentIcon, TabBar
|
from qfluentwidgets import PushSettingCard, FluentIcon, TabBar
|
||||||
from qfluentwidgets import TitleLabel, BodyLabel, PushButton, FluentIcon
|
from qfluentwidgets import TitleLabel, BodyLabel, PushButton, FluentIcon
|
||||||
from PyQt5.QtWidgets import QFileDialog
|
from PyQt5.QtWidgets import QFileDialog, QDialog, QHBoxLayout
|
||||||
|
from qfluentwidgets import ComboBox, PrimaryPushButton, SubtitleLabel
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
import tempfile
|
||||||
from .function_fit_interface import FunctionFitInterface
|
from .function_fit_interface import FunctionFitInterface
|
||||||
from .ai_interface import AIInterface
|
from .ai_interface import AIInterface
|
||||||
from qfluentwidgets import InfoBar
|
from qfluentwidgets import InfoBar
|
||||||
@ -56,6 +59,10 @@ class CodeConfigurationInterface(QWidget):
|
|||||||
self.update_template_btn.setFixedWidth(200)
|
self.update_template_btn.setFixedWidth(200)
|
||||||
mainLayout.addWidget(self.update_template_btn, alignment=Qt.AlignmentFlag.AlignCenter)
|
mainLayout.addWidget(self.update_template_btn, alignment=Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
|
self.preset_ioc_btn = PushButton(FluentIcon.LIBRARY, "获取预设IOC")
|
||||||
|
self.preset_ioc_btn.setFixedWidth(200)
|
||||||
|
mainLayout.addWidget(self.preset_ioc_btn, alignment=Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
mainLayout.addSpacing(10)
|
mainLayout.addSpacing(10)
|
||||||
mainLayout.addStretch()
|
mainLayout.addStretch()
|
||||||
|
|
||||||
@ -69,6 +76,7 @@ class CodeConfigurationInterface(QWidget):
|
|||||||
self.tabBar.tabCloseRequested.connect(self.onCloseTab)
|
self.tabBar.tabCloseRequested.connect(self.onCloseTab)
|
||||||
self.choose_btn.clicked.connect(self.choose_project_folder) # 启用选择项目路径按钮
|
self.choose_btn.clicked.connect(self.choose_project_folder) # 启用选择项目路径按钮
|
||||||
self.update_template_btn.clicked.connect(self.on_update_template)
|
self.update_template_btn.clicked.connect(self.on_update_template)
|
||||||
|
self.preset_ioc_btn.clicked.connect(self.use_preset_ioc) # 启用预设工程按钮
|
||||||
|
|
||||||
|
|
||||||
def on_update_template(self):
|
def on_update_template(self):
|
||||||
@ -88,6 +96,170 @@ class CodeConfigurationInterface(QWidget):
|
|||||||
)
|
)
|
||||||
update_code(parent=self, info_callback=info, error_callback=error)
|
update_code(parent=self, info_callback=info, error_callback=error)
|
||||||
|
|
||||||
|
def get_preset_ioc_files(self):
|
||||||
|
"""获取预设的ioc文件列表"""
|
||||||
|
try:
|
||||||
|
preset_ioc_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "assets", "User_code", "ioc")
|
||||||
|
if not os.path.exists(preset_ioc_dir):
|
||||||
|
return []
|
||||||
|
|
||||||
|
ioc_files = []
|
||||||
|
for filename in os.listdir(preset_ioc_dir):
|
||||||
|
if filename.endswith('.ioc'):
|
||||||
|
ioc_files.append({
|
||||||
|
'name': os.path.splitext(filename)[0],
|
||||||
|
'filename': filename,
|
||||||
|
'path': os.path.join(preset_ioc_dir, filename)
|
||||||
|
})
|
||||||
|
return ioc_files
|
||||||
|
except Exception as e:
|
||||||
|
print(f"获取预设ioc文件失败: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
def use_preset_ioc(self):
|
||||||
|
"""使用预设ioc文件"""
|
||||||
|
preset_files = self.get_preset_ioc_files()
|
||||||
|
if not preset_files:
|
||||||
|
InfoBar.warning(
|
||||||
|
title="无预设工程",
|
||||||
|
content="未找到可用的预设工程文件",
|
||||||
|
parent=self,
|
||||||
|
duration=2000
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
# 创建选择对话框
|
||||||
|
dialog = QDialog(self)
|
||||||
|
dialog.setWindowTitle("获取预设IOC")
|
||||||
|
dialog.resize(400, 200)
|
||||||
|
dialog.setModal(True)
|
||||||
|
|
||||||
|
layout = QVBoxLayout(dialog)
|
||||||
|
layout.setContentsMargins(24, 24, 24, 24)
|
||||||
|
layout.setSpacing(16)
|
||||||
|
|
||||||
|
# 标题
|
||||||
|
title_label = SubtitleLabel("选择要使用的IOC模版")
|
||||||
|
layout.addWidget(title_label)
|
||||||
|
|
||||||
|
# 选择下拉框
|
||||||
|
select_layout = QHBoxLayout()
|
||||||
|
select_label = BodyLabel("预设IOC:")
|
||||||
|
preset_combo = ComboBox()
|
||||||
|
|
||||||
|
# 修复ComboBox数据问题
|
||||||
|
for i, preset in enumerate(preset_files):
|
||||||
|
preset_combo.addItem(preset['name'])
|
||||||
|
|
||||||
|
select_layout.addWidget(select_label)
|
||||||
|
select_layout.addWidget(preset_combo)
|
||||||
|
layout.addLayout(select_layout)
|
||||||
|
|
||||||
|
layout.addSpacing(16)
|
||||||
|
|
||||||
|
# 按钮区域
|
||||||
|
btn_layout = QHBoxLayout()
|
||||||
|
btn_layout.addStretch()
|
||||||
|
|
||||||
|
cancel_btn = PushButton("取消")
|
||||||
|
ok_btn = PrimaryPushButton("保存到")
|
||||||
|
|
||||||
|
cancel_btn.clicked.connect(dialog.reject)
|
||||||
|
ok_btn.clicked.connect(dialog.accept)
|
||||||
|
|
||||||
|
btn_layout.addWidget(cancel_btn)
|
||||||
|
btn_layout.addWidget(ok_btn)
|
||||||
|
layout.addLayout(btn_layout)
|
||||||
|
|
||||||
|
# 显示对话框
|
||||||
|
if dialog.exec() == QDialog.Accepted:
|
||||||
|
selected_index = preset_combo.currentIndex()
|
||||||
|
if selected_index >= 0 and selected_index < len(preset_files):
|
||||||
|
selected_preset = preset_files[selected_index]
|
||||||
|
self.save_preset_template(selected_preset)
|
||||||
|
|
||||||
|
def save_preset_template(self, preset_info):
|
||||||
|
"""保存预设模板到用户指定位置"""
|
||||||
|
try:
|
||||||
|
# 让用户选择保存位置
|
||||||
|
save_dir = QFileDialog.getExistingDirectory(
|
||||||
|
self,
|
||||||
|
f"选择保存 {preset_info['name']} 模板的位置",
|
||||||
|
os.path.expanduser("~")
|
||||||
|
)
|
||||||
|
|
||||||
|
if not save_dir:
|
||||||
|
return
|
||||||
|
|
||||||
|
# 复制ioc文件到用户选择的目录
|
||||||
|
target_path = os.path.join(save_dir, preset_info['filename'])
|
||||||
|
|
||||||
|
# 检查目标文件是否已存在
|
||||||
|
if os.path.exists(target_path):
|
||||||
|
from qfluentwidgets import Dialog
|
||||||
|
dialog = Dialog("文件已存在", f"目标位置已存在 {preset_info['filename']},是否覆盖?", self)
|
||||||
|
if dialog.exec() != Dialog.Accepted:
|
||||||
|
return
|
||||||
|
|
||||||
|
# 复制文件
|
||||||
|
shutil.copy2(preset_info['path'], target_path)
|
||||||
|
|
||||||
|
InfoBar.success(
|
||||||
|
title="模板保存成功",
|
||||||
|
content=f"预设模板 {preset_info['name']} 已保存到:\n{target_path}",
|
||||||
|
parent=self,
|
||||||
|
duration=3000
|
||||||
|
)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
InfoBar.error(
|
||||||
|
title="保存失败",
|
||||||
|
content=f"保存预设模板失败: {str(e)}",
|
||||||
|
parent=self,
|
||||||
|
duration=3000
|
||||||
|
)
|
||||||
|
|
||||||
|
def open_project_from_path(self, folder_path):
|
||||||
|
"""从指定路径打开工程"""
|
||||||
|
try:
|
||||||
|
if not os.path.exists(folder_path):
|
||||||
|
return
|
||||||
|
|
||||||
|
ioc_files = [f for f in os.listdir(folder_path) if f.endswith('.ioc')]
|
||||||
|
if ioc_files:
|
||||||
|
# 检查是否已存在 codeGenPage 标签页
|
||||||
|
for i in range(self.stackedWidget.count()):
|
||||||
|
widget = self.stackedWidget.widget(i)
|
||||||
|
if widget is not None and widget.objectName() == "codeGenPage":
|
||||||
|
# 如果已存在,则切换到该标签页,并更新路径显示
|
||||||
|
if hasattr(widget, "project_path"):
|
||||||
|
widget.project_path = folder_path
|
||||||
|
if hasattr(widget, "refresh"):
|
||||||
|
widget.refresh()
|
||||||
|
self.stackedWidget.setCurrentWidget(widget)
|
||||||
|
self.tabBar.setCurrentTab("codeGenPage")
|
||||||
|
return
|
||||||
|
|
||||||
|
# 不存在则新建
|
||||||
|
code_gen_page = CodeGenerateInterface(folder_path, self)
|
||||||
|
self.addSubInterface(code_gen_page, "codeGenPage", "代码生成")
|
||||||
|
self.stackedWidget.setCurrentWidget(code_gen_page)
|
||||||
|
self.tabBar.setCurrentTab("codeGenPage")
|
||||||
|
else:
|
||||||
|
InfoBar.error(
|
||||||
|
title="未找到.ioc文件",
|
||||||
|
content="所选文件夹不是有效的CUBEMX工程目录",
|
||||||
|
parent=self,
|
||||||
|
duration=3000
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
InfoBar.error(
|
||||||
|
title="打开工程失败",
|
||||||
|
content=f"打开工程失败: {str(e)}",
|
||||||
|
parent=self,
|
||||||
|
duration=3000
|
||||||
|
)
|
||||||
|
|
||||||
def choose_project_folder(self):
|
def choose_project_folder(self):
|
||||||
folder = QFileDialog.getExistingDirectory(self, "选择CUBEMX工程目录")
|
folder = QFileDialog.getExistingDirectory(self, "选择CUBEMX工程目录")
|
||||||
if not folder:
|
if not folder:
|
||||||
|
|||||||
@ -637,6 +637,31 @@ class DataInterface(QWidget):
|
|||||||
for t in task_list:
|
for t in task_list:
|
||||||
desc = t.get("description", "")
|
desc = t.get("description", "")
|
||||||
desc_wrapped = "\n ".join(textwrap.wrap(desc, 20))
|
desc_wrapped = "\n ".join(textwrap.wrap(desc, 20))
|
||||||
|
|
||||||
|
# 检查是否是预设任务
|
||||||
|
if t.get("preset_task"):
|
||||||
|
# 使用预设任务的代码
|
||||||
|
preset_task_name = t["preset_task"]
|
||||||
|
from app.tools.code_generator import CodeGenerator
|
||||||
|
task_template_dir = CodeGenerator.get_assets_dir("User_code/task/template_task")
|
||||||
|
preset_task_file = os.path.join(task_template_dir, f"{preset_task_name}.c")
|
||||||
|
|
||||||
|
if os.path.exists(preset_task_file):
|
||||||
|
# 直接复制预设任务文件
|
||||||
|
task_c_path = os.path.join(output_dir, f"{t['name']}.c")
|
||||||
|
with open(preset_task_file, 'r', encoding='utf-8') as f:
|
||||||
|
preset_code = f.read()
|
||||||
|
|
||||||
|
# 如果任务名称不同,需要替换函数名
|
||||||
|
if preset_task_name != t["name"]:
|
||||||
|
# 替换任务函数名
|
||||||
|
preset_code = preset_code.replace(f"Task_{preset_task_name}", t["function"])
|
||||||
|
preset_code = preset_code.replace(f" {preset_task_name} Task", f" {t['name']} Task")
|
||||||
|
|
||||||
|
save_with_preserve(task_c_path, preset_code)
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 使用默认模板生成任务代码
|
||||||
context_task = {
|
context_task = {
|
||||||
"task_name": t["name"],
|
"task_name": t["name"],
|
||||||
"task_function": t["function"],
|
"task_function": t["function"],
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QWidget, QScrollArea
|
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QWidget, QScrollArea
|
||||||
from qfluentwidgets import (
|
from qfluentwidgets import (
|
||||||
BodyLabel, TitleLabel, HorizontalSeparator, PushButton, PrimaryPushButton,
|
BodyLabel, TitleLabel, HorizontalSeparator, PushButton, PrimaryPushButton,
|
||||||
LineEdit, SpinBox, DoubleSpinBox, CheckBox, TextEdit
|
LineEdit, SpinBox, DoubleSpinBox, CheckBox, TextEdit, ComboBox
|
||||||
)
|
)
|
||||||
from qfluentwidgets import theme, Theme
|
from qfluentwidgets import theme, Theme
|
||||||
import yaml
|
import yaml
|
||||||
@ -76,12 +76,20 @@ class TaskConfigDialog(QDialog):
|
|||||||
self.add_btn = PrimaryPushButton("创建新任务")
|
self.add_btn = PrimaryPushButton("创建新任务")
|
||||||
self.add_btn.setAutoDefault(False) # 禁止回车触发
|
self.add_btn.setAutoDefault(False) # 禁止回车触发
|
||||||
self.add_btn.setDefault(False)
|
self.add_btn.setDefault(False)
|
||||||
|
|
||||||
|
# 新增:预设任务按钮
|
||||||
|
self.preset_btn = PushButton("使用预设任务")
|
||||||
|
self.preset_btn.setAutoDefault(False)
|
||||||
|
self.preset_btn.setDefault(False)
|
||||||
|
|
||||||
self.del_btn = PushButton("删除当前任务")
|
self.del_btn = PushButton("删除当前任务")
|
||||||
self.del_btn.setAutoDefault(False) # 禁止回车触发
|
self.del_btn.setAutoDefault(False) # 禁止回车触发
|
||||||
self.del_btn.setDefault(False)
|
self.del_btn.setDefault(False)
|
||||||
self.add_btn.clicked.connect(self.add_task)
|
self.add_btn.clicked.connect(self.add_task)
|
||||||
|
self.preset_btn.clicked.connect(self.add_preset_task)
|
||||||
self.del_btn.clicked.connect(self.delete_current_task)
|
self.del_btn.clicked.connect(self.delete_current_task)
|
||||||
btn_layout.addWidget(self.add_btn)
|
btn_layout.addWidget(self.add_btn)
|
||||||
|
btn_layout.addWidget(self.preset_btn)
|
||||||
btn_layout.addWidget(self.del_btn)
|
btn_layout.addWidget(self.del_btn)
|
||||||
btn_layout.addStretch() # 添加/删除靠左,stretch在中间
|
btn_layout.addStretch() # 添加/删除靠左,stretch在中间
|
||||||
|
|
||||||
@ -135,6 +143,274 @@ class TaskConfigDialog(QDialog):
|
|||||||
self.task_btn_layout.addWidget(btn)
|
self.task_btn_layout.addWidget(btn)
|
||||||
self.task_btn_layout.addStretch()
|
self.task_btn_layout.addStretch()
|
||||||
|
|
||||||
|
def get_preset_tasks(self):
|
||||||
|
"""获取所有可用的预设任务"""
|
||||||
|
from app.tools.code_generator import CodeGenerator
|
||||||
|
task_dir = CodeGenerator.get_assets_dir("User_code/task/template_task")
|
||||||
|
preset_tasks = []
|
||||||
|
|
||||||
|
if not os.path.exists(task_dir):
|
||||||
|
return preset_tasks
|
||||||
|
|
||||||
|
for filename in os.listdir(task_dir):
|
||||||
|
if filename.endswith('.c') and not filename.endswith('.template'):
|
||||||
|
task_name = os.path.splitext(filename)[0]
|
||||||
|
preset_tasks.append(task_name)
|
||||||
|
|
||||||
|
return preset_tasks
|
||||||
|
|
||||||
|
def load_preset_task_config(self, task_name):
|
||||||
|
"""从 yaml 配置文件中加载预设任务的配置"""
|
||||||
|
try:
|
||||||
|
from app.tools.code_generator import CodeGenerator
|
||||||
|
template_dir = CodeGenerator.get_assets_dir("User_code/task/template_task")
|
||||||
|
config_file = os.path.join(template_dir, "task.yaml")
|
||||||
|
|
||||||
|
if not os.path.exists(config_file):
|
||||||
|
return None
|
||||||
|
|
||||||
|
with open(config_file, 'r', encoding='utf-8') as f:
|
||||||
|
config_data = yaml.safe_load(f)
|
||||||
|
|
||||||
|
if config_data and task_name in config_data:
|
||||||
|
return config_data[task_name]
|
||||||
|
return None
|
||||||
|
except Exception as e:
|
||||||
|
print(f"加载预设任务配置失败: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def load_preset_task_code(self, task_name):
|
||||||
|
"""加载预设任务的代码内容"""
|
||||||
|
from app.tools.code_generator import CodeGenerator
|
||||||
|
task_dir = CodeGenerator.get_assets_dir("User_code/task/template_task")
|
||||||
|
task_file = os.path.join(task_dir, f"{task_name}.c")
|
||||||
|
|
||||||
|
if os.path.exists(task_file):
|
||||||
|
with open(task_file, 'r', encoding='utf-8') as f:
|
||||||
|
return f.read()
|
||||||
|
return None
|
||||||
|
|
||||||
|
def add_preset_task(self):
|
||||||
|
"""添加预设任务"""
|
||||||
|
preset_tasks = self.get_preset_tasks()
|
||||||
|
if not preset_tasks:
|
||||||
|
InfoBar.warning(
|
||||||
|
title="无预设任务",
|
||||||
|
content="未找到可用的预设任务模板",
|
||||||
|
parent=self,
|
||||||
|
duration=2000
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
# 创建自适应主题的对话框
|
||||||
|
dialog = QDialog(self)
|
||||||
|
dialog.setWindowTitle("选择预设任务")
|
||||||
|
dialog.resize(600, 500)
|
||||||
|
dialog.setModal(True)
|
||||||
|
|
||||||
|
layout = QVBoxLayout(dialog)
|
||||||
|
layout.setContentsMargins(24, 24, 24, 24)
|
||||||
|
layout.setSpacing(18)
|
||||||
|
|
||||||
|
# 固定内容区域
|
||||||
|
fixed_content = QWidget()
|
||||||
|
fixed_content.setFixedHeight(180) # 减少固定高度
|
||||||
|
fixed_layout = QVBoxLayout(fixed_content)
|
||||||
|
fixed_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
fixed_layout.setSpacing(18)
|
||||||
|
|
||||||
|
# 标题
|
||||||
|
title_label = TitleLabel("选择预设任务模板")
|
||||||
|
fixed_layout.addWidget(title_label)
|
||||||
|
|
||||||
|
# 说明文字
|
||||||
|
desc_label = BodyLabel("选择一个预设任务模板,系统将自动复制相应的代码和配置")
|
||||||
|
fixed_layout.addWidget(desc_label)
|
||||||
|
|
||||||
|
fixed_layout.addWidget(HorizontalSeparator())
|
||||||
|
|
||||||
|
# 任务选择
|
||||||
|
select_layout = QHBoxLayout()
|
||||||
|
select_layout.setSpacing(12)
|
||||||
|
|
||||||
|
select_label = BodyLabel("预设任务:")
|
||||||
|
preset_combo = ComboBox()
|
||||||
|
preset_combo.addItems(preset_tasks)
|
||||||
|
preset_combo.setCurrentIndex(0)
|
||||||
|
preset_combo.setMinimumWidth(160)
|
||||||
|
|
||||||
|
select_layout.addWidget(select_label)
|
||||||
|
select_layout.addWidget(preset_combo)
|
||||||
|
select_layout.addStretch()
|
||||||
|
|
||||||
|
fixed_layout.addLayout(select_layout)
|
||||||
|
|
||||||
|
# 参数信息 - 单行显示
|
||||||
|
params_layout = QHBoxLayout()
|
||||||
|
params_layout.setSpacing(24) # 适中的间距
|
||||||
|
|
||||||
|
self.info_freq = BodyLabel("")
|
||||||
|
self.info_delay = BodyLabel("")
|
||||||
|
self.info_stack = BodyLabel("")
|
||||||
|
self.info_ctrl = BodyLabel("")
|
||||||
|
|
||||||
|
self.info_freq.setMinimumWidth(120)
|
||||||
|
self.info_delay.setMinimumWidth(100)
|
||||||
|
self.info_stack.setMinimumWidth(120)
|
||||||
|
self.info_ctrl.setMinimumWidth(100)
|
||||||
|
|
||||||
|
params_layout.addWidget(self.info_freq)
|
||||||
|
params_layout.addWidget(self.info_delay)
|
||||||
|
params_layout.addWidget(self.info_stack)
|
||||||
|
params_layout.addWidget(self.info_ctrl)
|
||||||
|
params_layout.addStretch()
|
||||||
|
|
||||||
|
fixed_layout.addLayout(params_layout)
|
||||||
|
fixed_layout.addStretch() # 在固定区域内保持紧凑
|
||||||
|
|
||||||
|
layout.addWidget(fixed_content)
|
||||||
|
|
||||||
|
# 弹性描述区域
|
||||||
|
desc_layout = QVBoxLayout()
|
||||||
|
desc_layout.setSpacing(8)
|
||||||
|
|
||||||
|
desc_title = BodyLabel("描述:")
|
||||||
|
desc_title.setStyleSheet("font-weight: bold;")
|
||||||
|
desc_layout.addWidget(desc_title)
|
||||||
|
|
||||||
|
self.preview_desc = TextEdit()
|
||||||
|
self.preview_desc.setReadOnly(True)
|
||||||
|
self.preview_desc.setMinimumHeight(60) # 最小高度
|
||||||
|
desc_layout.addWidget(self.preview_desc)
|
||||||
|
|
||||||
|
layout.addLayout(desc_layout, stretch=1) # 弹性伸缩
|
||||||
|
|
||||||
|
# 按钮区域
|
||||||
|
layout.addWidget(HorizontalSeparator())
|
||||||
|
btn_layout = QHBoxLayout()
|
||||||
|
btn_layout.addStretch()
|
||||||
|
|
||||||
|
cancel_btn = PushButton("取消")
|
||||||
|
ok_btn = PrimaryPushButton("确定添加")
|
||||||
|
|
||||||
|
cancel_btn.clicked.connect(dialog.reject)
|
||||||
|
ok_btn.clicked.connect(dialog.accept)
|
||||||
|
|
||||||
|
btn_layout.addWidget(cancel_btn)
|
||||||
|
btn_layout.addWidget(ok_btn)
|
||||||
|
layout.addLayout(btn_layout)
|
||||||
|
|
||||||
|
# 预览更新函数
|
||||||
|
def update_preview():
|
||||||
|
selected = preset_combo.currentText()
|
||||||
|
self.update_preset_preview(selected)
|
||||||
|
|
||||||
|
preset_combo.currentTextChanged.connect(update_preview)
|
||||||
|
|
||||||
|
# 存储对话框状态
|
||||||
|
self.current_preview_dialog = dialog
|
||||||
|
self.preview_combo = preset_combo
|
||||||
|
|
||||||
|
# 初始化预览
|
||||||
|
if preset_tasks:
|
||||||
|
update_preview()
|
||||||
|
|
||||||
|
# 显示对话框
|
||||||
|
if dialog.exec() == QDialog.Accepted:
|
||||||
|
selected_task = preset_combo.currentText()
|
||||||
|
self.save_form()
|
||||||
|
new_idx = len(self.tasks)
|
||||||
|
|
||||||
|
# 从配置文件加载预设任务参数
|
||||||
|
config = self.load_preset_task_config(selected_task)
|
||||||
|
if config:
|
||||||
|
new_task = self._make_task_obj({
|
||||||
|
"name": config.get("name", selected_task),
|
||||||
|
"frequency": config.get("frequency", 500),
|
||||||
|
"delay": config.get("delay", 0),
|
||||||
|
"stack": config.get("stack", 256),
|
||||||
|
"description": config.get("description", ""),
|
||||||
|
"freq_control": config.get("freq_control", True)
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
new_task = self._make_task_obj({"name": selected_task})
|
||||||
|
|
||||||
|
new_task["preset_task"] = selected_task
|
||||||
|
|
||||||
|
self.tasks.append(new_task)
|
||||||
|
self.current_index = new_idx
|
||||||
|
self.refresh_task_btns()
|
||||||
|
self.show_task_form(self.tasks[self.current_index])
|
||||||
|
|
||||||
|
InfoBar.success(
|
||||||
|
title="添加成功",
|
||||||
|
content=f"已添加预设任务:{selected_task}",
|
||||||
|
parent=self,
|
||||||
|
duration=2000
|
||||||
|
)
|
||||||
|
|
||||||
|
def update_preset_preview(self, task_name):
|
||||||
|
"""更新预设任务预览信息"""
|
||||||
|
# 从配置加载信息
|
||||||
|
config = self.load_preset_task_config(task_name)
|
||||||
|
if config:
|
||||||
|
self.info_freq.setText(f"频率: {config.get('frequency', 500)} Hz")
|
||||||
|
self.info_delay.setText(f"延时: {config.get('delay', 0)} ms")
|
||||||
|
self.info_stack.setText(f"堆栈: {config.get('stack', 256)} Bytes")
|
||||||
|
freq_ctrl = "启用" if config.get('freq_control', True) else "禁用"
|
||||||
|
self.info_ctrl.setText(f"频率控制: {freq_ctrl}")
|
||||||
|
|
||||||
|
description = config.get('description', f'预设任务:{task_name}')
|
||||||
|
self.preview_desc.setText(description)
|
||||||
|
else:
|
||||||
|
self.info_freq.setText("频率: 500 Hz")
|
||||||
|
self.info_delay.setText("延时: 0 ms")
|
||||||
|
self.info_stack.setText("堆栈: 256 Bytes")
|
||||||
|
self.info_ctrl.setText("频率控制: 启用")
|
||||||
|
self.preview_desc.setText(f"预设任务:{task_name}")
|
||||||
|
|
||||||
|
def on_preset_task_selected(self, task_name):
|
||||||
|
"""预设任务选择事件(向后兼容)"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_preset_task_description(self, task_name):
|
||||||
|
"""获取预设任务的描述信息"""
|
||||||
|
# 首先尝试从 yaml 配置中获取描述
|
||||||
|
config = self.load_preset_task_config(task_name)
|
||||||
|
if config and 'description' in config:
|
||||||
|
return f"预设任务:{task_name}\n\n{config['description']}\n\n频率控制:{'启用' if config.get('freq_control', True) else '禁用'}\n运行频率:{config.get('frequency', 500)} Hz\n堆栈大小:{config.get('stack', 256)} Bytes\n初始延时:{config.get('delay', 0)} ms"
|
||||||
|
|
||||||
|
# 如果没有配置文件,则从代码注释中提取
|
||||||
|
try:
|
||||||
|
task_code = self.load_preset_task_code(task_name)
|
||||||
|
if task_code:
|
||||||
|
# 尝试从注释中提取描述
|
||||||
|
lines = task_code.split('\n')
|
||||||
|
description_lines = []
|
||||||
|
in_comment = False
|
||||||
|
|
||||||
|
for line in lines[:20]: # 只检查前20行
|
||||||
|
line = line.strip()
|
||||||
|
if line.startswith('/*'):
|
||||||
|
in_comment = True
|
||||||
|
if 'Task' in line and line != '/*':
|
||||||
|
description_lines.append(line.replace('/*', '').strip())
|
||||||
|
continue
|
||||||
|
elif line.endswith('*/'):
|
||||||
|
in_comment = False
|
||||||
|
break
|
||||||
|
elif in_comment and line and not line.startswith('*'):
|
||||||
|
description_lines.append(line)
|
||||||
|
|
||||||
|
if description_lines:
|
||||||
|
return '\n'.join(description_lines)
|
||||||
|
else:
|
||||||
|
return f"预设任务:{task_name}\n这是一个预定义的任务模板,包含完整的实现代码。"
|
||||||
|
else:
|
||||||
|
return f"预设任务:{task_name}\n无法读取任务描述。"
|
||||||
|
except Exception as e:
|
||||||
|
return f"预设任务:{task_name}\n读取描述时出现错误:{str(e)}"
|
||||||
|
|
||||||
def add_task(self):
|
def add_task(self):
|
||||||
self.save_form()
|
self.save_form()
|
||||||
new_idx = len(self.tasks)
|
new_idx = len(self.tasks)
|
||||||
@ -302,5 +578,10 @@ class TaskConfigDialog(QDialog):
|
|||||||
}
|
}
|
||||||
if freq_ctrl:
|
if freq_ctrl:
|
||||||
task["frequency"] = freq
|
task["frequency"] = freq
|
||||||
|
|
||||||
|
# 保留预设任务信息
|
||||||
|
if "preset_task" in t:
|
||||||
|
task["preset_task"] = t["preset_task"]
|
||||||
|
|
||||||
tasks.append(task)
|
tasks.append(task)
|
||||||
return tasks
|
return tasks
|
||||||
BIN
assets/.DS_Store
vendored
BIN
assets/.DS_Store
vendored
Binary file not shown.
700
assets/User_code/ioc/CtrBoard-H7_ALL.ioc
Normal file
700
assets/User_code/ioc/CtrBoard-H7_ALL.ioc
Normal file
@ -0,0 +1,700 @@
|
|||||||
|
#MicroXplorer Configuration settings - do not modify
|
||||||
|
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4
|
||||||
|
ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_19
|
||||||
|
ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV64
|
||||||
|
ADC1.ContinuousConvMode=ENABLE
|
||||||
|
ADC1.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR
|
||||||
|
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ClockPrescaler,ContinuousConvMode,ConversionDataManagement,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,OffsetSignedSaturation-1\#ChannelRegularConversion,NbrOfConversion
|
||||||
|
ADC1.NbrOfConversion=2
|
||||||
|
ADC1.NbrOfConversionFlag=1
|
||||||
|
ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||||
|
ADC1.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||||
|
ADC1.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
|
||||||
|
ADC1.OffsetSignedSaturation-1\#ChannelRegularConversion=DISABLE
|
||||||
|
ADC1.Rank-0\#ChannelRegularConversion=1
|
||||||
|
ADC1.Rank-1\#ChannelRegularConversion=2
|
||||||
|
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_32CYCLES_5
|
||||||
|
ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_32CYCLES_5
|
||||||
|
ADC1.master=1
|
||||||
|
CAD.formats=
|
||||||
|
CAD.pinconfig=
|
||||||
|
CAD.provider=
|
||||||
|
CORTEX_M7.BaseAddress-Cortex_Memory_Protection_Unit_Region0_Settings=0x24000000
|
||||||
|
CORTEX_M7.CPU_DCache=Disabled
|
||||||
|
CORTEX_M7.CPU_ICache=Disabled
|
||||||
|
CORTEX_M7.Enable-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_REGION_ENABLE
|
||||||
|
CORTEX_M7.IPParameters=CPU_DCache,CPU_ICache,MPU_Control,Enable-Cortex_Memory_Protection_Unit_Region0_Settings,BaseAddress-Cortex_Memory_Protection_Unit_Region0_Settings,Size-Cortex_Memory_Protection_Unit_Region0_Settings,TypeExtField-Cortex_Memory_Protection_Unit_Region0_Settings,IsCacheable-Cortex_Memory_Protection_Unit_Region0_Settings,IsBufferable-Cortex_Memory_Protection_Unit_Region0_Settings
|
||||||
|
CORTEX_M7.IsBufferable-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_ACCESS_BUFFERABLE
|
||||||
|
CORTEX_M7.IsCacheable-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_ACCESS_CACHEABLE
|
||||||
|
CORTEX_M7.MPU_Control=__NULL
|
||||||
|
CORTEX_M7.Size-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_REGION_SIZE_512B
|
||||||
|
CORTEX_M7.TypeExtField-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_TEX_LEVEL1
|
||||||
|
Dma.ADC1.0.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.ADC1.0.EventEnable=DISABLE
|
||||||
|
Dma.ADC1.0.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.ADC1.0.Instance=DMA1_Stream0
|
||||||
|
Dma.ADC1.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
|
||||||
|
Dma.ADC1.0.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.ADC1.0.Mode=DMA_CIRCULAR
|
||||||
|
Dma.ADC1.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
|
||||||
|
Dma.ADC1.0.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.ADC1.0.Polarity=HAL_DMAMUX_REQ_GEN_RISING
|
||||||
|
Dma.ADC1.0.Priority=DMA_PRIORITY_LOW
|
||||||
|
Dma.ADC1.0.RequestNumber=1
|
||||||
|
Dma.ADC1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
|
||||||
|
Dma.ADC1.0.SignalID=NONE
|
||||||
|
Dma.ADC1.0.SyncEnable=DISABLE
|
||||||
|
Dma.ADC1.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
|
||||||
|
Dma.ADC1.0.SyncRequestNumber=1
|
||||||
|
Dma.ADC1.0.SyncSignalID=NONE
|
||||||
|
Dma.Request0=ADC1
|
||||||
|
Dma.Request1=SPI2_RX
|
||||||
|
Dma.Request2=SPI2_TX
|
||||||
|
Dma.Request3=UART5_RX
|
||||||
|
Dma.RequestsNb=4
|
||||||
|
Dma.SPI2_RX.1.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.SPI2_RX.1.EventEnable=DISABLE
|
||||||
|
Dma.SPI2_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.SPI2_RX.1.Instance=DMA1_Stream1
|
||||||
|
Dma.SPI2_RX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.SPI2_RX.1.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.SPI2_RX.1.Mode=DMA_NORMAL
|
||||||
|
Dma.SPI2_RX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.SPI2_RX.1.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.SPI2_RX.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING
|
||||||
|
Dma.SPI2_RX.1.Priority=DMA_PRIORITY_LOW
|
||||||
|
Dma.SPI2_RX.1.RequestNumber=1
|
||||||
|
Dma.SPI2_RX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
|
||||||
|
Dma.SPI2_RX.1.SignalID=NONE
|
||||||
|
Dma.SPI2_RX.1.SyncEnable=DISABLE
|
||||||
|
Dma.SPI2_RX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
|
||||||
|
Dma.SPI2_RX.1.SyncRequestNumber=1
|
||||||
|
Dma.SPI2_RX.1.SyncSignalID=NONE
|
||||||
|
Dma.SPI2_TX.2.Direction=DMA_MEMORY_TO_PERIPH
|
||||||
|
Dma.SPI2_TX.2.EventEnable=DISABLE
|
||||||
|
Dma.SPI2_TX.2.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.SPI2_TX.2.Instance=DMA1_Stream2
|
||||||
|
Dma.SPI2_TX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.SPI2_TX.2.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.SPI2_TX.2.Mode=DMA_NORMAL
|
||||||
|
Dma.SPI2_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.SPI2_TX.2.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.SPI2_TX.2.Polarity=HAL_DMAMUX_REQ_GEN_RISING
|
||||||
|
Dma.SPI2_TX.2.Priority=DMA_PRIORITY_LOW
|
||||||
|
Dma.SPI2_TX.2.RequestNumber=1
|
||||||
|
Dma.SPI2_TX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
|
||||||
|
Dma.SPI2_TX.2.SignalID=NONE
|
||||||
|
Dma.SPI2_TX.2.SyncEnable=DISABLE
|
||||||
|
Dma.SPI2_TX.2.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
|
||||||
|
Dma.SPI2_TX.2.SyncRequestNumber=1
|
||||||
|
Dma.SPI2_TX.2.SyncSignalID=NONE
|
||||||
|
Dma.UART5_RX.3.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.UART5_RX.3.EventEnable=DISABLE
|
||||||
|
Dma.UART5_RX.3.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.UART5_RX.3.Instance=DMA1_Stream3
|
||||||
|
Dma.UART5_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.UART5_RX.3.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.UART5_RX.3.Mode=DMA_NORMAL
|
||||||
|
Dma.UART5_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.UART5_RX.3.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.UART5_RX.3.Polarity=HAL_DMAMUX_REQ_GEN_RISING
|
||||||
|
Dma.UART5_RX.3.Priority=DMA_PRIORITY_LOW
|
||||||
|
Dma.UART5_RX.3.RequestNumber=1
|
||||||
|
Dma.UART5_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
|
||||||
|
Dma.UART5_RX.3.SignalID=NONE
|
||||||
|
Dma.UART5_RX.3.SyncEnable=DISABLE
|
||||||
|
Dma.UART5_RX.3.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
|
||||||
|
Dma.UART5_RX.3.SyncRequestNumber=1
|
||||||
|
Dma.UART5_RX.3.SyncSignalID=NONE
|
||||||
|
FDCAN1.AutoRetransmission=ENABLE
|
||||||
|
FDCAN1.CalculateBaudRateNominal=1000000
|
||||||
|
FDCAN1.CalculateTimeBitNominal=1000
|
||||||
|
FDCAN1.CalculateTimeQuantumNominal=200.0
|
||||||
|
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission
|
||||||
|
FDCAN1.NominalPrescaler=24
|
||||||
|
FDCAN1.NominalTimeSeg1=3
|
||||||
|
FDCAN1.RxFifo0ElmtsNbr=32
|
||||||
|
FDCAN1.StdFiltersNbr=1
|
||||||
|
FDCAN1.TxFifoQueueElmtsNbr=32
|
||||||
|
FDCAN2.AutoRetransmission=ENABLE
|
||||||
|
FDCAN2.CalculateBaudRateNominal=1000000
|
||||||
|
FDCAN2.CalculateTimeBitNominal=1000
|
||||||
|
FDCAN2.CalculateTimeQuantumNominal=200.0
|
||||||
|
FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission,RxFifo1ElmtsNbr
|
||||||
|
FDCAN2.MessageRAMOffset=0x406
|
||||||
|
FDCAN2.NominalPrescaler=24
|
||||||
|
FDCAN2.NominalTimeSeg1=3
|
||||||
|
FDCAN2.RxFifo0ElmtsNbr=32
|
||||||
|
FDCAN2.RxFifo1ElmtsNbr=32
|
||||||
|
FDCAN2.StdFiltersNbr=1
|
||||||
|
FDCAN2.TxFifoQueueElmtsNbr=32
|
||||||
|
FDCAN3.AutoRetransmission=ENABLE
|
||||||
|
FDCAN3.CalculateBaudRateNominal=1000000
|
||||||
|
FDCAN3.CalculateTimeBitNominal=1000
|
||||||
|
FDCAN3.CalculateTimeQuantumNominal=200.0
|
||||||
|
FDCAN3.ExtFiltersNbr=1
|
||||||
|
FDCAN3.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission,RxFifo1ElmtsNbr,ExtFiltersNbr
|
||||||
|
FDCAN3.MessageRAMOffset=0x812
|
||||||
|
FDCAN3.NominalPrescaler=24
|
||||||
|
FDCAN3.NominalTimeSeg1=3
|
||||||
|
FDCAN3.RxFifo0ElmtsNbr=32
|
||||||
|
FDCAN3.RxFifo1ElmtsNbr=32
|
||||||
|
FDCAN3.StdFiltersNbr=1
|
||||||
|
FDCAN3.TxFifoQueueElmtsNbr=32
|
||||||
|
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE
|
||||||
|
FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
|
||||||
|
FREERTOS.configTOTAL_HEAP_SIZE=0x10000
|
||||||
|
File.Version=6
|
||||||
|
GPIO.groupedBy=Group By Peripherals
|
||||||
|
KeepUserPlacement=false
|
||||||
|
MMTAppRegionsCount=0
|
||||||
|
MMTConfigApplied=false
|
||||||
|
Mcu.CPN=STM32H723VGT6
|
||||||
|
Mcu.Family=STM32H7
|
||||||
|
Mcu.IP0=ADC1
|
||||||
|
Mcu.IP1=CORTEX_M7
|
||||||
|
Mcu.IP10=OCTOSPI1
|
||||||
|
Mcu.IP11=RCC
|
||||||
|
Mcu.IP12=SPI1
|
||||||
|
Mcu.IP13=SPI2
|
||||||
|
Mcu.IP14=SYS
|
||||||
|
Mcu.IP15=TIM1
|
||||||
|
Mcu.IP16=TIM2
|
||||||
|
Mcu.IP17=TIM3
|
||||||
|
Mcu.IP18=TIM12
|
||||||
|
Mcu.IP19=UART5
|
||||||
|
Mcu.IP2=DEBUG
|
||||||
|
Mcu.IP20=UART7
|
||||||
|
Mcu.IP21=USART1
|
||||||
|
Mcu.IP22=USART2
|
||||||
|
Mcu.IP23=USART3
|
||||||
|
Mcu.IP24=USART10
|
||||||
|
Mcu.IP25=USB_OTG_HS
|
||||||
|
Mcu.IP3=DMA
|
||||||
|
Mcu.IP4=FDCAN1
|
||||||
|
Mcu.IP5=FDCAN2
|
||||||
|
Mcu.IP6=FDCAN3
|
||||||
|
Mcu.IP7=FREERTOS
|
||||||
|
Mcu.IP8=MEMORYMAP
|
||||||
|
Mcu.IP9=NVIC
|
||||||
|
Mcu.IPNb=26
|
||||||
|
Mcu.Name=STM32H723VGTx
|
||||||
|
Mcu.Package=LQFP100
|
||||||
|
Mcu.Pin0=PE2
|
||||||
|
Mcu.Pin1=PE3
|
||||||
|
Mcu.Pin10=PC3_C
|
||||||
|
Mcu.Pin11=PA0
|
||||||
|
Mcu.Pin12=PA1
|
||||||
|
Mcu.Pin13=PA2
|
||||||
|
Mcu.Pin14=PA3
|
||||||
|
Mcu.Pin15=PA5
|
||||||
|
Mcu.Pin16=PA7
|
||||||
|
Mcu.Pin17=PC4
|
||||||
|
Mcu.Pin18=PC5
|
||||||
|
Mcu.Pin19=PB0
|
||||||
|
Mcu.Pin2=PC13
|
||||||
|
Mcu.Pin20=PB1
|
||||||
|
Mcu.Pin21=PB2
|
||||||
|
Mcu.Pin22=PE7
|
||||||
|
Mcu.Pin23=PE8
|
||||||
|
Mcu.Pin24=PE9
|
||||||
|
Mcu.Pin25=PE10
|
||||||
|
Mcu.Pin26=PE11
|
||||||
|
Mcu.Pin27=PE12
|
||||||
|
Mcu.Pin28=PE13
|
||||||
|
Mcu.Pin29=PE15
|
||||||
|
Mcu.Pin3=PC14-OSC32_IN
|
||||||
|
Mcu.Pin30=PB10
|
||||||
|
Mcu.Pin31=PB11
|
||||||
|
Mcu.Pin32=PB12
|
||||||
|
Mcu.Pin33=PB13
|
||||||
|
Mcu.Pin34=PB14
|
||||||
|
Mcu.Pin35=PB15
|
||||||
|
Mcu.Pin36=PD8
|
||||||
|
Mcu.Pin37=PD9
|
||||||
|
Mcu.Pin38=PD10
|
||||||
|
Mcu.Pin39=PD11
|
||||||
|
Mcu.Pin4=PC15-OSC32_OUT
|
||||||
|
Mcu.Pin40=PD12
|
||||||
|
Mcu.Pin41=PD13
|
||||||
|
Mcu.Pin42=PA8
|
||||||
|
Mcu.Pin43=PA9
|
||||||
|
Mcu.Pin44=PA10
|
||||||
|
Mcu.Pin45=PA11
|
||||||
|
Mcu.Pin46=PA12
|
||||||
|
Mcu.Pin47=PA13(JTMS/SWDIO)
|
||||||
|
Mcu.Pin48=PA14(JTCK/SWCLK)
|
||||||
|
Mcu.Pin49=PA15(JTDI)
|
||||||
|
Mcu.Pin5=PH0-OSC_IN
|
||||||
|
Mcu.Pin50=PC12
|
||||||
|
Mcu.Pin51=PD0
|
||||||
|
Mcu.Pin52=PD1
|
||||||
|
Mcu.Pin53=PD2
|
||||||
|
Mcu.Pin54=PD4
|
||||||
|
Mcu.Pin55=PD5
|
||||||
|
Mcu.Pin56=PD6
|
||||||
|
Mcu.Pin57=PD7
|
||||||
|
Mcu.Pin58=PB3(JTDO/TRACESWO)
|
||||||
|
Mcu.Pin59=PB5
|
||||||
|
Mcu.Pin6=PH1-OSC_OUT
|
||||||
|
Mcu.Pin60=PB6
|
||||||
|
Mcu.Pin61=VP_FREERTOS_VS_CMSIS_V2
|
||||||
|
Mcu.Pin62=VP_OCTOSPI1_VS_octo
|
||||||
|
Mcu.Pin63=VP_SYS_VS_tim23
|
||||||
|
Mcu.Pin64=VP_MEMORYMAP_VS_MEMORYMAP
|
||||||
|
Mcu.Pin7=PC0
|
||||||
|
Mcu.Pin8=PC1
|
||||||
|
Mcu.Pin9=PC2_C
|
||||||
|
Mcu.PinsNb=65
|
||||||
|
Mcu.ThirdPartyNb=0
|
||||||
|
Mcu.UserConstants=
|
||||||
|
Mcu.UserName=STM32H723VGTx
|
||||||
|
MxCube.Version=6.15.0
|
||||||
|
MxDb.Version=DB.6.0.150
|
||||||
|
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.DMA1_Stream0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA1_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA1_Stream3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.EXTI15_10_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN1_IT0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN1_IT1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN2_IT0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN2_IT1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN3_IT0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN3_IT1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.ForceEnableDMAVector=true
|
||||||
|
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false\:false
|
||||||
|
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
||||||
|
NVIC.SPI2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false\:false
|
||||||
|
NVIC.SavedPendsvIrqHandlerGenerated=true
|
||||||
|
NVIC.SavedSvcallIrqHandlerGenerated=true
|
||||||
|
NVIC.SavedSystickIrqHandlerGenerated=true
|
||||||
|
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:true\:false
|
||||||
|
NVIC.TIM23_IRQn=true\:15\:0\:false\:false\:true\:false\:false\:true\:true
|
||||||
|
NVIC.TimeBase=TIM23_IRQn
|
||||||
|
NVIC.TimeBaseIP=TIM23
|
||||||
|
NVIC.UART5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.UART7_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.USART10_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.USART1_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.USART2_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.USART3_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
PA0.Locked=true
|
||||||
|
PA0.Signal=S_TIM2_CH1_ETR
|
||||||
|
PA1.Locked=true
|
||||||
|
PA1.Mode=OCTOSPI1_IOL_Port1L
|
||||||
|
PA1.Signal=OCTOSPIM_P1_IO3
|
||||||
|
PA10.Locked=true
|
||||||
|
PA10.Mode=Asynchronous
|
||||||
|
PA10.Signal=USART1_RX
|
||||||
|
PA11.Mode=Device_Only_FS
|
||||||
|
PA11.Signal=USB_OTG_HS_DM
|
||||||
|
PA12.Mode=Device_Only_FS
|
||||||
|
PA12.Signal=USB_OTG_HS_DP
|
||||||
|
PA13(JTMS/SWDIO).Locked=true
|
||||||
|
PA13(JTMS/SWDIO).Mode=Serial_Wire
|
||||||
|
PA13(JTMS/SWDIO).Signal=DEBUG_JTMS-SWDIO
|
||||||
|
PA14(JTCK/SWCLK).Locked=true
|
||||||
|
PA14(JTCK/SWCLK).Mode=Serial_Wire
|
||||||
|
PA14(JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK
|
||||||
|
PA15(JTDI).Locked=true
|
||||||
|
PA15(JTDI).Signal=GPIO_Input
|
||||||
|
PA2.Locked=true
|
||||||
|
PA2.Signal=S_TIM2_CH3
|
||||||
|
PA3.Locked=true
|
||||||
|
PA3.Mode=OCTOSPI1_IOL_Port1L
|
||||||
|
PA3.Signal=OCTOSPIM_P1_IO2
|
||||||
|
PA5.Locked=true
|
||||||
|
PA5.Signal=ADCx_INP19
|
||||||
|
PA7.GPIOParameters=GPIO_Label
|
||||||
|
PA7.GPIO_Label=WS2812
|
||||||
|
PA7.Locked=true
|
||||||
|
PA7.Signal=S_TIM3_CH2
|
||||||
|
PA8.Locked=true
|
||||||
|
PA8.Mode=Clock-out-1
|
||||||
|
PA8.Signal=RCC_MCO_1
|
||||||
|
PA9.Locked=true
|
||||||
|
PA9.Mode=Asynchronous
|
||||||
|
PA9.Signal=USART1_TX
|
||||||
|
PB0.Locked=true
|
||||||
|
PB0.Mode=OCTOSPI1_IOL_Port1L
|
||||||
|
PB0.Signal=OCTOSPIM_P1_IO1
|
||||||
|
PB1.GPIOParameters=GPIO_Label
|
||||||
|
PB1.GPIO_Label=IMU_HEAT
|
||||||
|
PB1.Locked=true
|
||||||
|
PB1.Signal=S_TIM3_CH4
|
||||||
|
PB10.GPIOParameters=GPIO_Label
|
||||||
|
PB10.GPIO_Label=LCD_BLK
|
||||||
|
PB10.Locked=true
|
||||||
|
PB10.Signal=GPIO_Output
|
||||||
|
PB11.GPIOParameters=GPIO_Label
|
||||||
|
PB11.GPIO_Label=LCD_RES
|
||||||
|
PB11.Locked=true
|
||||||
|
PB11.Signal=GPIO_Output
|
||||||
|
PB12.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
|
||||||
|
PB12.GPIO_Label=DCMI_REST
|
||||||
|
PB12.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PB12.Locked=true
|
||||||
|
PB12.PinState=GPIO_PIN_SET
|
||||||
|
PB12.Signal=GPIO_Output
|
||||||
|
PB13.GPIOParameters=GPIO_Speed
|
||||||
|
PB13.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PB13.Locked=true
|
||||||
|
PB13.Mode=Full_Duplex_Master
|
||||||
|
PB13.Signal=SPI2_SCK
|
||||||
|
PB14.Mode=Hardware Flow Control (RS485)
|
||||||
|
PB14.Signal=USART3_DE
|
||||||
|
PB15.GPIOParameters=GPIO_Label
|
||||||
|
PB15.GPIO_Label=BUZZER
|
||||||
|
PB15.Locked=true
|
||||||
|
PB15.Signal=S_TIM12_CH2
|
||||||
|
PB2.Locked=true
|
||||||
|
PB2.Mode=O1_P1_CLK
|
||||||
|
PB2.Signal=OCTOSPIM_P1_CLK
|
||||||
|
PB3(JTDO/TRACESWO).GPIOParameters=GPIO_Speed
|
||||||
|
PB3(JTDO/TRACESWO).GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PB3(JTDO/TRACESWO).Mode=TX_Only_Simplex_Unidirect_Master
|
||||||
|
PB3(JTDO/TRACESWO).Signal=SPI1_SCK
|
||||||
|
PB5.Locked=true
|
||||||
|
PB5.Mode=FDCAN_Activate
|
||||||
|
PB5.Signal=FDCAN2_RX
|
||||||
|
PB6.Locked=true
|
||||||
|
PB6.Mode=FDCAN_Activate
|
||||||
|
PB6.Signal=FDCAN2_TX
|
||||||
|
PC0.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
|
||||||
|
PC0.GPIO_Label=ACCL_CS
|
||||||
|
PC0.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PC0.Locked=true
|
||||||
|
PC0.PinState=GPIO_PIN_SET
|
||||||
|
PC0.Signal=GPIO_Output
|
||||||
|
PC1.GPIOParameters=GPIO_Speed
|
||||||
|
PC1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PC1.Mode=Full_Duplex_Master
|
||||||
|
PC1.Signal=SPI2_MOSI
|
||||||
|
PC12.Mode=Asynchronous
|
||||||
|
PC12.Signal=UART5_TX
|
||||||
|
PC13.GPIOParameters=PinState,GPIO_Label
|
||||||
|
PC13.GPIO_Label=POWER_24V_2
|
||||||
|
PC13.Locked=true
|
||||||
|
PC13.PinState=GPIO_PIN_SET
|
||||||
|
PC13.Signal=GPIO_Output
|
||||||
|
PC14-OSC32_IN.GPIOParameters=PinState,GPIO_Label
|
||||||
|
PC14-OSC32_IN.GPIO_Label=POWER_24V_1
|
||||||
|
PC14-OSC32_IN.Locked=true
|
||||||
|
PC14-OSC32_IN.PinState=GPIO_PIN_SET
|
||||||
|
PC14-OSC32_IN.Signal=GPIO_Output
|
||||||
|
PC15-OSC32_OUT.GPIOParameters=PinState,GPIO_Label
|
||||||
|
PC15-OSC32_OUT.GPIO_Label=POWER_5V
|
||||||
|
PC15-OSC32_OUT.Locked=true
|
||||||
|
PC15-OSC32_OUT.PinState=GPIO_PIN_SET
|
||||||
|
PC15-OSC32_OUT.Signal=GPIO_Output
|
||||||
|
PC2_C.GPIOParameters=GPIO_Speed
|
||||||
|
PC2_C.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PC2_C.Mode=Full_Duplex_Master
|
||||||
|
PC2_C.Signal=SPI2_MISO
|
||||||
|
PC3_C.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
|
||||||
|
PC3_C.GPIO_Label=GYRO_CS
|
||||||
|
PC3_C.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PC3_C.Locked=true
|
||||||
|
PC3_C.PinState=GPIO_PIN_SET
|
||||||
|
PC3_C.Signal=GPIO_Output
|
||||||
|
PC4.Locked=true
|
||||||
|
PC4.Signal=ADCx_INP4
|
||||||
|
PC5.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
|
||||||
|
PC5.GPIO_Label=DCMI_PWDN
|
||||||
|
PC5.GPIO_PuPd=GPIO_NOPULL
|
||||||
|
PC5.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PC5.Locked=true
|
||||||
|
PC5.PinState=GPIO_PIN_SET
|
||||||
|
PC5.Signal=GPIO_Output
|
||||||
|
PD0.Mode=FDCAN_Activate
|
||||||
|
PD0.Signal=FDCAN1_RX
|
||||||
|
PD1.Locked=true
|
||||||
|
PD1.Mode=FDCAN_Activate
|
||||||
|
PD1.Signal=FDCAN1_TX
|
||||||
|
PD10.GPIOParameters=GPIO_Label
|
||||||
|
PD10.GPIO_Label=LCD_DC
|
||||||
|
PD10.Locked=true
|
||||||
|
PD10.Signal=GPIO_Output
|
||||||
|
PD11.Locked=true
|
||||||
|
PD11.Mode=OCTOSPI1_IOL_Port1L
|
||||||
|
PD11.Signal=OCTOSPIM_P1_IO0
|
||||||
|
PD12.Mode=FDCAN_Activate
|
||||||
|
PD12.Signal=FDCAN3_RX
|
||||||
|
PD13.Locked=true
|
||||||
|
PD13.Mode=FDCAN_Activate
|
||||||
|
PD13.Signal=FDCAN3_TX
|
||||||
|
PD2.Mode=Asynchronous
|
||||||
|
PD2.Signal=UART5_RX
|
||||||
|
PD4.Locked=true
|
||||||
|
PD4.Mode=Hardware Flow Control (RS485)
|
||||||
|
PD4.Signal=USART2_DE
|
||||||
|
PD5.Locked=true
|
||||||
|
PD5.Mode=Asynchronous
|
||||||
|
PD5.Signal=USART2_TX
|
||||||
|
PD6.Locked=true
|
||||||
|
PD6.Mode=Asynchronous
|
||||||
|
PD6.Signal=USART2_RX
|
||||||
|
PD7.GPIOParameters=GPIO_Speed
|
||||||
|
PD7.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PD7.Locked=true
|
||||||
|
PD7.Mode=TX_Only_Simplex_Unidirect_Master
|
||||||
|
PD7.Signal=SPI1_MOSI
|
||||||
|
PD8.Mode=Asynchronous
|
||||||
|
PD8.Signal=USART3_TX
|
||||||
|
PD9.Mode=Asynchronous
|
||||||
|
PD9.Signal=USART3_RX
|
||||||
|
PE10.GPIOParameters=GPIO_Label
|
||||||
|
PE10.GPIO_Label=ACCL_INT
|
||||||
|
PE10.Locked=true
|
||||||
|
PE10.Signal=GPXTI10
|
||||||
|
PE11.Locked=true
|
||||||
|
PE11.Mode=OCTOSPI1_Port1_NCS
|
||||||
|
PE11.Signal=OCTOSPIM_P1_NCS
|
||||||
|
PE12.GPIOParameters=GPIO_Label
|
||||||
|
PE12.GPIO_Label=GYRO_INT
|
||||||
|
PE12.Locked=true
|
||||||
|
PE12.Signal=GPXTI12
|
||||||
|
PE13.Signal=S_TIM1_CH3
|
||||||
|
PE15.GPIOParameters=GPIO_Label
|
||||||
|
PE15.GPIO_Label=LCD_CS
|
||||||
|
PE15.Locked=true
|
||||||
|
PE15.Signal=GPIO_Output
|
||||||
|
PE2.Mode=Asynchronous
|
||||||
|
PE2.Signal=USART10_RX
|
||||||
|
PE3.Mode=Asynchronous
|
||||||
|
PE3.Signal=USART10_TX
|
||||||
|
PE7.Mode=Asynchronous
|
||||||
|
PE7.Signal=UART7_RX
|
||||||
|
PE8.Mode=Asynchronous
|
||||||
|
PE8.Signal=UART7_TX
|
||||||
|
PE9.Locked=true
|
||||||
|
PE9.Signal=S_TIM1_CH1
|
||||||
|
PH0-OSC_IN.Mode=HSE-External-Oscillator
|
||||||
|
PH0-OSC_IN.Signal=RCC_OSC_IN
|
||||||
|
PH1-OSC_OUT.Mode=HSE-External-Oscillator
|
||||||
|
PH1-OSC_OUT.Signal=RCC_OSC_OUT
|
||||||
|
PinOutPanel.RotationAngle=0
|
||||||
|
ProjectManager.AskForMigrate=true
|
||||||
|
ProjectManager.BackupPrevious=false
|
||||||
|
ProjectManager.CompilerLinker=GCC
|
||||||
|
ProjectManager.CompilerOptimize=6
|
||||||
|
ProjectManager.ComputerToolchain=false
|
||||||
|
ProjectManager.CoupleFile=true
|
||||||
|
ProjectManager.CustomerFirmwarePackage=
|
||||||
|
ProjectManager.DefaultFWLocation=true
|
||||||
|
ProjectManager.DeletePrevious=true
|
||||||
|
ProjectManager.DeviceId=STM32H723VGTx
|
||||||
|
ProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.12.1
|
||||||
|
ProjectManager.FreePins=false
|
||||||
|
ProjectManager.HalAssertFull=false
|
||||||
|
ProjectManager.HeapSize=0x1000
|
||||||
|
ProjectManager.KeepUserCode=true
|
||||||
|
ProjectManager.LastFirmware=true
|
||||||
|
ProjectManager.LibraryCopy=0
|
||||||
|
ProjectManager.MainLocation=Core/Src
|
||||||
|
ProjectManager.NoMain=false
|
||||||
|
ProjectManager.PreviousToolchain=
|
||||||
|
ProjectManager.ProjectBuild=false
|
||||||
|
ProjectManager.ProjectFileName=CtrBoard-H7_ALL.ioc
|
||||||
|
ProjectManager.ProjectName=CtrBoard-H7_ALL
|
||||||
|
ProjectManager.ProjectStructure=
|
||||||
|
ProjectManager.RegisterCallBack=
|
||||||
|
ProjectManager.StackSize=0x2000
|
||||||
|
ProjectManager.TargetToolchain=MDK-ARM V5.32
|
||||||
|
ProjectManager.ToolChainLocation=
|
||||||
|
ProjectManager.UAScriptAfterPath=
|
||||||
|
ProjectManager.UAScriptBeforePath=
|
||||||
|
ProjectManager.UnderRoot=false
|
||||||
|
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_TIM12_Init-TIM12-false-HAL-true,6-MX_SPI1_Init-SPI1-false-HAL-true,7-MX_SPI2_Init-SPI2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_USART2_UART_Init-USART2-false-HAL-true,11-MX_USART3_UART_Init-USART3-false-HAL-true,12-MX_UART7_Init-UART7-false-HAL-true,13-MX_USART10_UART_Init-USART10-false-HAL-true,14-MX_FDCAN1_Init-FDCAN1-false-HAL-true,15-MX_FDCAN2_Init-FDCAN2-false-HAL-true,16-MX_FDCAN3_Init-FDCAN3-false-HAL-true,17-MX_TIM1_Init-TIM1-false-HAL-true,18-MX_TIM2_Init-TIM2-false-HAL-true,19-MX_OCTOSPI1_Init-OCTOSPI1-false-HAL-true,20-MX_USB_OTG_HS_PCD_Init-USB_OTG_HS-false-HAL-true,21-MX_UART5_Init-UART5-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
|
||||||
|
RCC.ADCFreq_Value=96000000
|
||||||
|
RCC.AHB12Freq_Value=240000000
|
||||||
|
RCC.AHB4Freq_Value=240000000
|
||||||
|
RCC.APB1Freq_Value=120000000
|
||||||
|
RCC.APB2Freq_Value=120000000
|
||||||
|
RCC.APB3Freq_Value=120000000
|
||||||
|
RCC.APB4Freq_Value=120000000
|
||||||
|
RCC.AXIClockFreq_Value=240000000
|
||||||
|
RCC.CECFreq_Value=32000
|
||||||
|
RCC.CKPERFreq_Value=64000000
|
||||||
|
RCC.CortexFreq_Value=480000000
|
||||||
|
RCC.CpuClockFreq_Value=480000000
|
||||||
|
RCC.D1CPREFreq_Value=480000000
|
||||||
|
RCC.D1PPRE=RCC_APB3_DIV2
|
||||||
|
RCC.D2PPRE1=RCC_APB1_DIV2
|
||||||
|
RCC.D2PPRE2=RCC_APB2_DIV2
|
||||||
|
RCC.D3PPRE=RCC_APB4_DIV2
|
||||||
|
RCC.DFSDMACLkFreq_Value=120000000
|
||||||
|
RCC.DFSDMFreq_Value=120000000
|
||||||
|
RCC.DIVM1=2
|
||||||
|
RCC.DIVM2=2
|
||||||
|
RCC.DIVN1=40
|
||||||
|
RCC.DIVN2=16
|
||||||
|
RCC.DIVP1=1
|
||||||
|
RCC.DIVP1Freq_Value=480000000
|
||||||
|
RCC.DIVP2Freq_Value=96000000
|
||||||
|
RCC.DIVP3Freq_Value=48375000
|
||||||
|
RCC.DIVQ1=4
|
||||||
|
RCC.DIVQ1Freq_Value=120000000
|
||||||
|
RCC.DIVQ2Freq_Value=96000000
|
||||||
|
RCC.DIVQ3Freq_Value=48375000
|
||||||
|
RCC.DIVR1Freq_Value=240000000
|
||||||
|
RCC.DIVR2Freq_Value=96000000
|
||||||
|
RCC.DIVR3Freq_Value=48375000
|
||||||
|
RCC.EnbaleCSS=false
|
||||||
|
RCC.FDCANFreq_Value=120000000
|
||||||
|
RCC.FMCFreq_Value=240000000
|
||||||
|
RCC.FamilyName=M
|
||||||
|
RCC.HCLK3ClockFreq_Value=240000000
|
||||||
|
RCC.HCLKFreq_Value=240000000
|
||||||
|
RCC.HPRE=RCC_HCLK_DIV2
|
||||||
|
RCC.HSE_VALUE=24000000
|
||||||
|
RCC.I2C123Freq_Value=120000000
|
||||||
|
RCC.I2C4Freq_Value=120000000
|
||||||
|
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL2_VCI_Range-AdvancedSettings,PLL2_VCO_SEL-AdvancedSettings,PLL3FRACN,PLL3_VCO_SEL-AdvancedSettings,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6CLockSelection,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBCLockSelection,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
|
||||||
|
RCC.LPTIM1Freq_Value=120000000
|
||||||
|
RCC.LPTIM2Freq_Value=120000000
|
||||||
|
RCC.LPTIM345Freq_Value=120000000
|
||||||
|
RCC.LPUART1Freq_Value=120000000
|
||||||
|
RCC.LTDCFreq_Value=48375000
|
||||||
|
RCC.MCO1PinFreq_Value=64000000
|
||||||
|
RCC.MCO2PinFreq_Value=480000000
|
||||||
|
RCC.PLL2FRACN=0
|
||||||
|
RCC.PLL2_VCI_Range-AdvancedSettings=RCC_PLL2VCIRANGE_0
|
||||||
|
RCC.PLL2_VCO_SEL-AdvancedSettings=RCC_PLL2VCOWIDE
|
||||||
|
RCC.PLL3FRACN=0
|
||||||
|
RCC.PLL3_VCO_SEL-AdvancedSettings=RCC_PLL3VCOMEDIUM
|
||||||
|
RCC.PLLFRACN=0
|
||||||
|
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
||||||
|
RCC.QSPIFreq_Value=240000000
|
||||||
|
RCC.RNGFreq_Value=48000000
|
||||||
|
RCC.RTCFreq_Value=32000
|
||||||
|
RCC.SAI1Freq_Value=120000000
|
||||||
|
RCC.SAI4AFreq_Value=120000000
|
||||||
|
RCC.SAI4BFreq_Value=120000000
|
||||||
|
RCC.SDMMCFreq_Value=120000000
|
||||||
|
RCC.SPDIFRXFreq_Value=120000000
|
||||||
|
RCC.SPI123Freq_Value=120000000
|
||||||
|
RCC.SPI45Freq_Value=120000000
|
||||||
|
RCC.SPI6CLockSelection=RCC_SPI6CLKSOURCE_HSE
|
||||||
|
RCC.SPI6Freq_Value=24000000
|
||||||
|
RCC.SWPMI1Freq_Value=120000000
|
||||||
|
RCC.SYSCLKFreq_VALUE=480000000
|
||||||
|
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||||
|
RCC.Tim1OutputFreq_Value=240000000
|
||||||
|
RCC.Tim2OutputFreq_Value=240000000
|
||||||
|
RCC.TraceFreq_Value=240000000
|
||||||
|
RCC.USART16Freq_Value=120000000
|
||||||
|
RCC.USART234578Freq_Value=120000000
|
||||||
|
RCC.USBCLockSelection=RCC_USBCLKSOURCE_HSI48
|
||||||
|
RCC.USBFreq_Value=48000000
|
||||||
|
RCC.VCO1OutputFreq_Value=480000000
|
||||||
|
RCC.VCO2OutputFreq_Value=192000000
|
||||||
|
RCC.VCO3OutputFreq_Value=96750000
|
||||||
|
RCC.VCOInput1Freq_Value=12000000
|
||||||
|
RCC.VCOInput2Freq_Value=12000000
|
||||||
|
RCC.VCOInput3Freq_Value=750000
|
||||||
|
SH.ADCx_INP19.0=ADC1_INP19,IN19-Single-Ended
|
||||||
|
SH.ADCx_INP19.ConfNb=1
|
||||||
|
SH.ADCx_INP4.0=ADC1_INP4,IN4-Single-Ended
|
||||||
|
SH.ADCx_INP4.ConfNb=1
|
||||||
|
SH.GPXTI10.0=GPIO_EXTI10
|
||||||
|
SH.GPXTI10.ConfNb=1
|
||||||
|
SH.GPXTI12.0=GPIO_EXTI12
|
||||||
|
SH.GPXTI12.ConfNb=1
|
||||||
|
SH.S_TIM12_CH2.0=TIM12_CH2,PWM Generation2 CH2
|
||||||
|
SH.S_TIM12_CH2.ConfNb=1
|
||||||
|
SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM1_CH1.ConfNb=1
|
||||||
|
SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM1_CH3.ConfNb=1
|
||||||
|
SH.S_TIM2_CH1_ETR.0=TIM2_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM2_CH1_ETR.ConfNb=1
|
||||||
|
SH.S_TIM2_CH3.0=TIM2_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM2_CH3.ConfNb=1
|
||||||
|
SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2
|
||||||
|
SH.S_TIM3_CH2.ConfNb=1
|
||||||
|
SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4
|
||||||
|
SH.S_TIM3_CH4.ConfNb=1
|
||||||
|
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4
|
||||||
|
SPI1.CLKPolarity=SPI_POLARITY_HIGH
|
||||||
|
SPI1.CalculateBaudRate=30.0 MBits/s
|
||||||
|
SPI1.DataSize=SPI_DATASIZE_8BIT
|
||||||
|
SPI1.Direction=SPI_DIRECTION_2LINES_TXONLY
|
||||||
|
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity
|
||||||
|
SPI1.Mode=SPI_MODE_MASTER
|
||||||
|
SPI1.VirtualType=VM_MASTER
|
||||||
|
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32
|
||||||
|
SPI2.CLKPhase=SPI_PHASE_2EDGE
|
||||||
|
SPI2.CLKPolarity=SPI_POLARITY_HIGH
|
||||||
|
SPI2.CalculateBaudRate=3.75 MBits/s
|
||||||
|
SPI2.DataSize=SPI_DATASIZE_8BIT
|
||||||
|
SPI2.Direction=SPI_DIRECTION_2LINES
|
||||||
|
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase
|
||||||
|
SPI2.Mode=SPI_MODE_MASTER
|
||||||
|
SPI2.VirtualType=VM_MASTER
|
||||||
|
TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
||||||
|
TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM1.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation3 CH3,Prescaler
|
||||||
|
TIM1.Period=10000
|
||||||
|
TIM1.Prescaler=24
|
||||||
|
TIM1.Pulse-PWM\ Generation1\ CH1=5000
|
||||||
|
TIM1.Pulse-PWM\ Generation3\ CH3=5000
|
||||||
|
TIM12.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
|
TIM12.IPParameters=Channel-PWM Generation2 CH2,Prescaler,Period
|
||||||
|
TIM12.Period=2000-1
|
||||||
|
TIM12.Prescaler=24-1
|
||||||
|
TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
||||||
|
TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM2.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation3 CH3,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation3 CH3,Prescaler
|
||||||
|
TIM2.Period=10000
|
||||||
|
TIM2.Prescaler=24
|
||||||
|
TIM2.Pulse-PWM\ Generation1\ CH1=5000
|
||||||
|
TIM2.Pulse-PWM\ Generation3\ CH3=5000
|
||||||
|
TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
|
||||||
|
TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
|
TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
|
||||||
|
TIM3.IPParameters=Channel-PWM Generation4 CH4,Prescaler,Period,AutoReloadPreload,Channel-PWM Generation2 CH2
|
||||||
|
TIM3.Period=10000-1
|
||||||
|
TIM3.Prescaler=24-1
|
||||||
|
UART5.BaudRate=100000
|
||||||
|
UART5.IPParameters=Mode,WordLength,Parity,BaudRate
|
||||||
|
UART5.Mode=MODE_RX
|
||||||
|
UART5.Parity=PARITY_EVEN
|
||||||
|
UART5.WordLength=WORDLENGTH_9B
|
||||||
|
UART7.BaudRate=921600
|
||||||
|
UART7.IPParameters=BaudRate
|
||||||
|
USART1.BaudRate=921600
|
||||||
|
USART1.IPParameters=VirtualMode-Asynchronous,BaudRate
|
||||||
|
USART1.VirtualMode-Asynchronous=VM_ASYNC
|
||||||
|
USART10.BaudRate=921600
|
||||||
|
USART10.IPParameters=VirtualMode,BaudRate
|
||||||
|
USART10.VirtualMode=VM_ASYNC
|
||||||
|
USART2.BaudRate=921600
|
||||||
|
USART2.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485),BaudRate
|
||||||
|
USART2.VirtualMode-Asynchronous=VM_ASYNC
|
||||||
|
USART2.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
|
||||||
|
USART3.BaudRate=921600
|
||||||
|
USART3.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485),BaudRate
|
||||||
|
USART3.VirtualMode-Asynchronous=VM_ASYNC
|
||||||
|
USART3.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
|
||||||
|
USB_OTG_HS.IPParameters=VirtualMode-Device_Only_FS
|
||||||
|
USB_OTG_HS.VirtualMode-Device_Only_FS=Device_Only_FS
|
||||||
|
VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2
|
||||||
|
VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2
|
||||||
|
VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg
|
||||||
|
VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP
|
||||||
|
VP_OCTOSPI1_VS_octo.Mode=octo_mode
|
||||||
|
VP_OCTOSPI1_VS_octo.Signal=OCTOSPI1_VS_octo
|
||||||
|
VP_SYS_VS_tim23.Mode=TIM23
|
||||||
|
VP_SYS_VS_tim23.Signal=SYS_VS_tim23
|
||||||
|
board=custom
|
||||||
|
rtos.0.ip=FREERTOS
|
||||||
743
assets/User_code/ioc/DevC.ioc
Normal file
743
assets/User_code/ioc/DevC.ioc
Normal file
@ -0,0 +1,743 @@
|
|||||||
|
#MicroXplorer Configuration settings - do not modify
|
||||||
|
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
|
||||||
|
ADC1.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV6
|
||||||
|
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler
|
||||||
|
ADC1.NbrOfConversionFlag=1
|
||||||
|
ADC1.Rank-0\#ChannelRegularConversion=1
|
||||||
|
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
|
||||||
|
ADC1.master=1
|
||||||
|
ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_8
|
||||||
|
ADC3.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV6
|
||||||
|
ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler
|
||||||
|
ADC3.NbrOfConversionFlag=1
|
||||||
|
ADC3.Rank-0\#ChannelRegularConversion=1
|
||||||
|
ADC3.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
|
||||||
|
CAD.formats=
|
||||||
|
CAD.pinconfig=
|
||||||
|
CAD.provider=
|
||||||
|
CAN1.ABOM=DISABLE
|
||||||
|
CAN1.BS1=CAN_BS1_6TQ
|
||||||
|
CAN1.BS2=CAN_BS2_7TQ
|
||||||
|
CAN1.CalculateBaudRate=1000000
|
||||||
|
CAN1.CalculateTimeBit=1000
|
||||||
|
CAN1.CalculateTimeQuantum=71.42857142857143
|
||||||
|
CAN1.IPParameters=CalculateTimeQuantum,BS1,BS2,Prescaler,TXFP,ABOM,CalculateTimeBit,CalculateBaudRate,NART
|
||||||
|
CAN1.NART=ENABLE
|
||||||
|
CAN1.Prescaler=3
|
||||||
|
CAN1.TXFP=ENABLE
|
||||||
|
CAN2.BS1=CAN_BS1_6TQ
|
||||||
|
CAN2.BS2=CAN_BS2_7TQ
|
||||||
|
CAN2.CalculateBaudRate=1000000
|
||||||
|
CAN2.CalculateTimeBit=1000
|
||||||
|
CAN2.CalculateTimeQuantum=71.42857142857143
|
||||||
|
CAN2.IPParameters=CalculateTimeQuantum,BS1,BS2,Prescaler,TXFP,CalculateTimeBit,CalculateBaudRate,NART
|
||||||
|
CAN2.NART=ENABLE
|
||||||
|
CAN2.Prescaler=3
|
||||||
|
CAN2.TXFP=ENABLE
|
||||||
|
Dma.I2C2_TX.2.Direction=DMA_MEMORY_TO_PERIPH
|
||||||
|
Dma.I2C2_TX.2.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.I2C2_TX.2.Instance=DMA1_Stream7
|
||||||
|
Dma.I2C2_TX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.I2C2_TX.2.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.I2C2_TX.2.Mode=DMA_NORMAL
|
||||||
|
Dma.I2C2_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.I2C2_TX.2.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.I2C2_TX.2.Priority=DMA_PRIORITY_HIGH
|
||||||
|
Dma.I2C2_TX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.I2C3_RX.7.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.I2C3_RX.7.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.I2C3_RX.7.Instance=DMA1_Stream2
|
||||||
|
Dma.I2C3_RX.7.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.I2C3_RX.7.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.I2C3_RX.7.Mode=DMA_NORMAL
|
||||||
|
Dma.I2C3_RX.7.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.I2C3_RX.7.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.I2C3_RX.7.Priority=DMA_PRIORITY_LOW
|
||||||
|
Dma.I2C3_RX.7.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.Request0=SPI1_RX
|
||||||
|
Dma.Request1=SPI1_TX
|
||||||
|
Dma.Request2=I2C2_TX
|
||||||
|
Dma.Request3=USART3_RX
|
||||||
|
Dma.Request4=USART6_RX
|
||||||
|
Dma.Request5=USART6_TX
|
||||||
|
Dma.Request6=USART1_TX
|
||||||
|
Dma.Request7=I2C3_RX
|
||||||
|
Dma.Request8=USART1_RX
|
||||||
|
Dma.RequestsNb=9
|
||||||
|
Dma.SPI1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.SPI1_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.SPI1_RX.0.Instance=DMA2_Stream2
|
||||||
|
Dma.SPI1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.SPI1_RX.0.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.SPI1_RX.0.Mode=DMA_NORMAL
|
||||||
|
Dma.SPI1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.SPI1_RX.0.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.SPI1_RX.0.Priority=DMA_PRIORITY_VERY_HIGH
|
||||||
|
Dma.SPI1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.SPI1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
|
||||||
|
Dma.SPI1_TX.1.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.SPI1_TX.1.Instance=DMA2_Stream3
|
||||||
|
Dma.SPI1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.SPI1_TX.1.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.SPI1_TX.1.Mode=DMA_NORMAL
|
||||||
|
Dma.SPI1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.SPI1_TX.1.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.SPI1_TX.1.Priority=DMA_PRIORITY_HIGH
|
||||||
|
Dma.SPI1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.USART1_RX.8.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.USART1_RX.8.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.USART1_RX.8.Instance=DMA2_Stream5
|
||||||
|
Dma.USART1_RX.8.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.USART1_RX.8.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.USART1_RX.8.Mode=DMA_NORMAL
|
||||||
|
Dma.USART1_RX.8.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.USART1_RX.8.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.USART1_RX.8.Priority=DMA_PRIORITY_MEDIUM
|
||||||
|
Dma.USART1_RX.8.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.USART1_TX.6.Direction=DMA_MEMORY_TO_PERIPH
|
||||||
|
Dma.USART1_TX.6.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.USART1_TX.6.Instance=DMA2_Stream7
|
||||||
|
Dma.USART1_TX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.USART1_TX.6.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.USART1_TX.6.Mode=DMA_NORMAL
|
||||||
|
Dma.USART1_TX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.USART1_TX.6.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.USART1_TX.6.Priority=DMA_PRIORITY_MEDIUM
|
||||||
|
Dma.USART1_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.USART3_RX.3.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.USART3_RX.3.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.USART3_RX.3.Instance=DMA1_Stream1
|
||||||
|
Dma.USART3_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.USART3_RX.3.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.USART3_RX.3.Mode=DMA_NORMAL
|
||||||
|
Dma.USART3_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.USART3_RX.3.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.USART3_RX.3.Priority=DMA_PRIORITY_HIGH
|
||||||
|
Dma.USART3_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.USART6_RX.4.Direction=DMA_PERIPH_TO_MEMORY
|
||||||
|
Dma.USART6_RX.4.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.USART6_RX.4.Instance=DMA2_Stream1
|
||||||
|
Dma.USART6_RX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.USART6_RX.4.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.USART6_RX.4.Mode=DMA_NORMAL
|
||||||
|
Dma.USART6_RX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.USART6_RX.4.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.USART6_RX.4.Priority=DMA_PRIORITY_MEDIUM
|
||||||
|
Dma.USART6_RX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
Dma.USART6_TX.5.Direction=DMA_MEMORY_TO_PERIPH
|
||||||
|
Dma.USART6_TX.5.FIFOMode=DMA_FIFOMODE_DISABLE
|
||||||
|
Dma.USART6_TX.5.Instance=DMA2_Stream6
|
||||||
|
Dma.USART6_TX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
|
||||||
|
Dma.USART6_TX.5.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.USART6_TX.5.Mode=DMA_NORMAL
|
||||||
|
Dma.USART6_TX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
|
||||||
|
Dma.USART6_TX.5.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.USART6_TX.5.Priority=DMA_PRIORITY_MEDIUM
|
||||||
|
Dma.USART6_TX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
|
||||||
|
FREERTOS.FootprintOK=true
|
||||||
|
FREERTOS.INCLUDE_pcTaskGetTaskName=1
|
||||||
|
FREERTOS.INCLUDE_uxTaskGetStackHighWaterMark2=1
|
||||||
|
FREERTOS.INCLUDE_vTaskCleanUpResources=1
|
||||||
|
FREERTOS.INCLUDE_xEventGroupSetBitFromISR=1
|
||||||
|
FREERTOS.INCLUDE_xSemaphoreGetMutexHolder=1
|
||||||
|
FREERTOS.INCLUDE_xTaskAbortDelay=1
|
||||||
|
FREERTOS.INCLUDE_xTaskGetCurrentTaskHandle=1
|
||||||
|
FREERTOS.INCLUDE_xTaskGetHandle=1
|
||||||
|
FREERTOS.IPParameters=Tasks01,FootprintOK,configENABLE_FPU,configENABLE_BACKWARD_COMPATIBILITY,configRECORD_STACK_HIGH_ADDRESS,configCHECK_FOR_STACK_OVERFLOW,configGENERATE_RUN_TIME_STATS,configUSE_STATS_FORMATTING_FUNCTIONS,configTOTAL_HEAP_SIZE,INCLUDE_xTaskGetCurrentTaskHandle,INCLUDE_xTaskGetHandle,INCLUDE_uxTaskGetStackHighWaterMark2,INCLUDE_xEventGroupSetBitFromISR,INCLUDE_xTaskAbortDelay,INCLUDE_pcTaskGetTaskName,INCLUDE_xSemaphoreGetMutexHolder,INCLUDE_vTaskCleanUpResources,configUSE_APPLICATION_TASK_TAG
|
||||||
|
FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
|
||||||
|
FREERTOS.configCHECK_FOR_STACK_OVERFLOW=2
|
||||||
|
FREERTOS.configENABLE_BACKWARD_COMPATIBILITY=0
|
||||||
|
FREERTOS.configENABLE_FPU=1
|
||||||
|
FREERTOS.configGENERATE_RUN_TIME_STATS=1
|
||||||
|
FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1
|
||||||
|
FREERTOS.configTOTAL_HEAP_SIZE=0x10000
|
||||||
|
FREERTOS.configUSE_APPLICATION_TASK_TAG=0
|
||||||
|
FREERTOS.configUSE_STATS_FORMATTING_FUNCTIONS=1
|
||||||
|
File.Version=6
|
||||||
|
GPIO.groupedBy=Group By Peripherals
|
||||||
|
I2C1.I2C_Mode=I2C_Fast
|
||||||
|
I2C1.IPParameters=I2C_Mode
|
||||||
|
I2C2.I2C_Mode=I2C_Fast
|
||||||
|
I2C2.IPParameters=I2C_Mode
|
||||||
|
I2C3.I2C_Mode=I2C_Fast
|
||||||
|
I2C3.IPParameters=I2C_Mode
|
||||||
|
KeepUserPlacement=false
|
||||||
|
Mcu.CPN=STM32F407IGH6
|
||||||
|
Mcu.Family=STM32F4
|
||||||
|
Mcu.IP0=ADC1
|
||||||
|
Mcu.IP1=ADC3
|
||||||
|
Mcu.IP10=NVIC
|
||||||
|
Mcu.IP11=RCC
|
||||||
|
Mcu.IP12=RNG
|
||||||
|
Mcu.IP13=SPI1
|
||||||
|
Mcu.IP14=SPI2
|
||||||
|
Mcu.IP15=SYS
|
||||||
|
Mcu.IP16=TIM1
|
||||||
|
Mcu.IP17=TIM3
|
||||||
|
Mcu.IP18=TIM4
|
||||||
|
Mcu.IP19=TIM5
|
||||||
|
Mcu.IP2=CAN1
|
||||||
|
Mcu.IP20=TIM7
|
||||||
|
Mcu.IP21=TIM8
|
||||||
|
Mcu.IP22=TIM10
|
||||||
|
Mcu.IP23=USART1
|
||||||
|
Mcu.IP24=USART3
|
||||||
|
Mcu.IP25=USART6
|
||||||
|
Mcu.IP26=USB_DEVICE
|
||||||
|
Mcu.IP27=USB_OTG_FS
|
||||||
|
Mcu.IP3=CAN2
|
||||||
|
Mcu.IP4=CRC
|
||||||
|
Mcu.IP5=DMA
|
||||||
|
Mcu.IP6=FREERTOS
|
||||||
|
Mcu.IP7=I2C1
|
||||||
|
Mcu.IP8=I2C2
|
||||||
|
Mcu.IP9=I2C3
|
||||||
|
Mcu.IPNb=28
|
||||||
|
Mcu.Name=STM32F407I(E-G)Hx
|
||||||
|
Mcu.Package=UFBGA176
|
||||||
|
Mcu.Pin0=PB8
|
||||||
|
Mcu.Pin1=PB5
|
||||||
|
Mcu.Pin10=PD0
|
||||||
|
Mcu.Pin11=PC11
|
||||||
|
Mcu.Pin12=PC10
|
||||||
|
Mcu.Pin13=PA12
|
||||||
|
Mcu.Pin14=PI6
|
||||||
|
Mcu.Pin15=PG9
|
||||||
|
Mcu.Pin16=PD1
|
||||||
|
Mcu.Pin17=PA11
|
||||||
|
Mcu.Pin18=PF0
|
||||||
|
Mcu.Pin19=PA9
|
||||||
|
Mcu.Pin2=PG14
|
||||||
|
Mcu.Pin20=PC9
|
||||||
|
Mcu.Pin21=PA8
|
||||||
|
Mcu.Pin22=PH0-OSC_IN
|
||||||
|
Mcu.Pin23=PC8
|
||||||
|
Mcu.Pin24=PH1-OSC_OUT
|
||||||
|
Mcu.Pin25=PF1
|
||||||
|
Mcu.Pin26=PC6
|
||||||
|
Mcu.Pin27=PG6
|
||||||
|
Mcu.Pin28=PF6
|
||||||
|
Mcu.Pin29=PH12
|
||||||
|
Mcu.Pin3=PB4
|
||||||
|
Mcu.Pin30=PG3
|
||||||
|
Mcu.Pin31=PF10
|
||||||
|
Mcu.Pin32=PH11
|
||||||
|
Mcu.Pin33=PH10
|
||||||
|
Mcu.Pin34=PC0
|
||||||
|
Mcu.Pin35=PC1
|
||||||
|
Mcu.Pin36=PC2
|
||||||
|
Mcu.Pin37=PD14
|
||||||
|
Mcu.Pin38=PA0-WKUP
|
||||||
|
Mcu.Pin39=PA4
|
||||||
|
Mcu.Pin4=PB3
|
||||||
|
Mcu.Pin40=PC4
|
||||||
|
Mcu.Pin41=PE13
|
||||||
|
Mcu.Pin42=PC5
|
||||||
|
Mcu.Pin43=PE9
|
||||||
|
Mcu.Pin44=PE11
|
||||||
|
Mcu.Pin45=PE14
|
||||||
|
Mcu.Pin46=PB12
|
||||||
|
Mcu.Pin47=PB13
|
||||||
|
Mcu.Pin48=PA7
|
||||||
|
Mcu.Pin49=PB0
|
||||||
|
Mcu.Pin5=PA14
|
||||||
|
Mcu.Pin50=PB14
|
||||||
|
Mcu.Pin51=PB15
|
||||||
|
Mcu.Pin52=VP_ADC1_TempSens_Input
|
||||||
|
Mcu.Pin53=VP_ADC1_Vref_Input
|
||||||
|
Mcu.Pin54=VP_CRC_VS_CRC
|
||||||
|
Mcu.Pin55=VP_FREERTOS_VS_CMSIS_V2
|
||||||
|
Mcu.Pin56=VP_RNG_VS_RNG
|
||||||
|
Mcu.Pin57=VP_SYS_VS_Systick
|
||||||
|
Mcu.Pin58=VP_TIM1_VS_ClockSourceINT
|
||||||
|
Mcu.Pin59=VP_TIM3_VS_ClockSourceINT
|
||||||
|
Mcu.Pin6=PA13
|
||||||
|
Mcu.Pin60=VP_TIM4_VS_ClockSourceINT
|
||||||
|
Mcu.Pin61=VP_TIM5_VS_ClockSourceINT
|
||||||
|
Mcu.Pin62=VP_TIM7_VS_ClockSourceINT
|
||||||
|
Mcu.Pin63=VP_TIM8_VS_ClockSourceINT
|
||||||
|
Mcu.Pin64=VP_TIM10_VS_ClockSourceINT
|
||||||
|
Mcu.Pin65=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
|
||||||
|
Mcu.Pin7=PB9
|
||||||
|
Mcu.Pin8=PB7
|
||||||
|
Mcu.Pin9=PB6
|
||||||
|
Mcu.PinsNb=66
|
||||||
|
Mcu.ThirdPartyNb=0
|
||||||
|
Mcu.UserConstants=
|
||||||
|
Mcu.UserName=STM32F407IGHx
|
||||||
|
MxCube.Version=6.15.0
|
||||||
|
MxDb.Version=DB.6.0.150
|
||||||
|
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.CAN1_RX0_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.CAN1_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.CAN1_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.CAN2_RX0_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.CAN2_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.CAN2_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.DMA1_Stream1_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA1_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA1_Stream7_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA2_Stream1_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA2_Stream2_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA2_Stream3_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA2_Stream5_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA2_Stream6_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DMA2_Stream7_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.EXTI0_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.EXTI3_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.EXTI4_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.EXTI9_5_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.ForceEnableDMAVector=true
|
||||||
|
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
||||||
|
NVIC.OTG_FS_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
|
||||||
|
NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false\:false
|
||||||
|
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
||||||
|
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false\:false
|
||||||
|
NVIC.SavedPendsvIrqHandlerGenerated=true
|
||||||
|
NVIC.SavedSvcallIrqHandlerGenerated=true
|
||||||
|
NVIC.SavedSystickIrqHandlerGenerated=true
|
||||||
|
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true\:false\:true\:false
|
||||||
|
NVIC.TIM1_BRK_TIM9_IRQn=true\:5\:0\:false\:false\:true\:false\:false\:true\:true
|
||||||
|
NVIC.TIM7_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.USART6_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
|
||||||
|
NVIC.UsageFault_IRQn=true\:0\:0\:true\:false\:true\:false\:false\:false\:false
|
||||||
|
PA0-WKUP.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||||
|
PA0-WKUP.GPIO_Label=USER_KEY
|
||||||
|
PA0-WKUP.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||||
|
PA0-WKUP.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PA0-WKUP.Locked=true
|
||||||
|
PA0-WKUP.Signal=GPXTI0
|
||||||
|
PA11.Mode=Device_Only
|
||||||
|
PA11.Signal=USB_OTG_FS_DM
|
||||||
|
PA12.Mode=Device_Only
|
||||||
|
PA12.Signal=USB_OTG_FS_DP
|
||||||
|
PA13.Mode=Serial_Wire
|
||||||
|
PA13.Signal=SYS_JTMS-SWDIO
|
||||||
|
PA14.Mode=Serial_Wire
|
||||||
|
PA14.Signal=SYS_JTCK-SWCLK
|
||||||
|
PA4.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
|
||||||
|
PA4.GPIO_Label=ACCL_CS
|
||||||
|
PA4.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PA4.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
|
||||||
|
PA4.Locked=true
|
||||||
|
PA4.PinState=GPIO_PIN_SET
|
||||||
|
PA4.Signal=GPIO_Output
|
||||||
|
PA7.GPIOParameters=GPIO_PuPd
|
||||||
|
PA7.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PA7.Locked=true
|
||||||
|
PA7.Mode=Full_Duplex_Master
|
||||||
|
PA7.Signal=SPI1_MOSI
|
||||||
|
PA8.GPIOParameters=GPIO_Pu
|
||||||
|
PA8.GPIO_Pu=GPIO_PULLUP
|
||||||
|
PA8.Locked=true
|
||||||
|
PA8.Mode=I2C
|
||||||
|
PA8.Signal=I2C3_SCL
|
||||||
|
PA9.Locked=true
|
||||||
|
PA9.Mode=Asynchronous
|
||||||
|
PA9.Signal=USART1_TX
|
||||||
|
PB0.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
|
||||||
|
PB0.GPIO_Label=GYRO_CS
|
||||||
|
PB0.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB0.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
|
||||||
|
PB0.Locked=true
|
||||||
|
PB0.PinState=GPIO_PIN_SET
|
||||||
|
PB0.Signal=GPIO_Output
|
||||||
|
PB12.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
|
||||||
|
PB12.GPIO_Label=SPI2_CS
|
||||||
|
PB12.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB12.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
|
||||||
|
PB12.Locked=true
|
||||||
|
PB12.PinState=GPIO_PIN_SET
|
||||||
|
PB12.Signal=GPIO_Output
|
||||||
|
PB13.GPIOParameters=GPIO_PuPd
|
||||||
|
PB13.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB13.Locked=true
|
||||||
|
PB13.Mode=Full_Duplex_Master
|
||||||
|
PB13.Signal=SPI2_SCK
|
||||||
|
PB14.GPIOParameters=GPIO_PuPd
|
||||||
|
PB14.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB14.Locked=true
|
||||||
|
PB14.Mode=Full_Duplex_Master
|
||||||
|
PB14.Signal=SPI2_MISO
|
||||||
|
PB15.GPIOParameters=GPIO_PuPd
|
||||||
|
PB15.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB15.Locked=true
|
||||||
|
PB15.Mode=Full_Duplex_Master
|
||||||
|
PB15.Signal=SPI2_MOSI
|
||||||
|
PB3.GPIOParameters=GPIO_PuPd
|
||||||
|
PB3.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB3.Locked=true
|
||||||
|
PB3.Mode=Full_Duplex_Master
|
||||||
|
PB3.Signal=SPI1_SCK
|
||||||
|
PB4.GPIOParameters=GPIO_PuPd
|
||||||
|
PB4.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PB4.Locked=true
|
||||||
|
PB4.Mode=Full_Duplex_Master
|
||||||
|
PB4.Signal=SPI1_MISO
|
||||||
|
PB5.Locked=true
|
||||||
|
PB5.Mode=CAN_Activate
|
||||||
|
PB5.Signal=CAN2_RX
|
||||||
|
PB6.Locked=true
|
||||||
|
PB6.Mode=CAN_Activate
|
||||||
|
PB6.Signal=CAN2_TX
|
||||||
|
PB7.Locked=true
|
||||||
|
PB7.Mode=Asynchronous
|
||||||
|
PB7.Signal=USART1_RX
|
||||||
|
PB8.GPIOParameters=GPIO_Pu
|
||||||
|
PB8.GPIO_Pu=GPIO_PULLUP
|
||||||
|
PB8.Locked=true
|
||||||
|
PB8.Mode=I2C
|
||||||
|
PB8.Signal=I2C1_SCL
|
||||||
|
PB9.GPIOParameters=GPIO_Pu
|
||||||
|
PB9.GPIO_Pu=GPIO_PULLUP
|
||||||
|
PB9.Locked=true
|
||||||
|
PB9.Mode=I2C
|
||||||
|
PB9.Signal=I2C1_SDA
|
||||||
|
PC0.GPIOParameters=GPIO_Label
|
||||||
|
PC0.GPIO_Label=HW0
|
||||||
|
PC0.Locked=true
|
||||||
|
PC0.Signal=GPIO_Input
|
||||||
|
PC1.GPIOParameters=GPIO_Label
|
||||||
|
PC1.GPIO_Label=HW1
|
||||||
|
PC1.Locked=true
|
||||||
|
PC1.Signal=GPIO_Input
|
||||||
|
PC10.Locked=true
|
||||||
|
PC10.Mode=Asynchronous
|
||||||
|
PC10.Signal=USART3_TX
|
||||||
|
PC11.Locked=true
|
||||||
|
PC11.Mode=Asynchronous
|
||||||
|
PC11.Signal=USART3_RX
|
||||||
|
PC2.GPIOParameters=GPIO_Label
|
||||||
|
PC2.GPIO_Label=HW2
|
||||||
|
PC2.Locked=true
|
||||||
|
PC2.Signal=GPIO_Input
|
||||||
|
PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||||
|
PC4.GPIO_Label=ACCL_INT
|
||||||
|
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||||
|
PC4.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PC4.Locked=true
|
||||||
|
PC4.Signal=GPXTI4
|
||||||
|
PC5.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||||
|
PC5.GPIO_Label=GYRO_INT
|
||||||
|
PC5.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||||
|
PC5.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PC5.Locked=true
|
||||||
|
PC5.Signal=GPXTI5
|
||||||
|
PC6.GPIOParameters=GPIO_Speed,GPIO_PuPd
|
||||||
|
PC6.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PC6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PC6.Locked=true
|
||||||
|
PC6.Signal=S_TIM8_CH1
|
||||||
|
PC8.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
|
||||||
|
PC8.GPIO_Label=LASER
|
||||||
|
PC8.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PC8.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PC8.Locked=true
|
||||||
|
PC8.Signal=S_TIM3_CH3
|
||||||
|
PC9.GPIOParameters=GPIO_Pu
|
||||||
|
PC9.GPIO_Pu=GPIO_PULLUP
|
||||||
|
PC9.Locked=true
|
||||||
|
PC9.Mode=I2C
|
||||||
|
PC9.Signal=I2C3_SDA
|
||||||
|
PD0.Locked=true
|
||||||
|
PD0.Mode=CAN_Activate
|
||||||
|
PD0.Signal=CAN1_RX
|
||||||
|
PD1.Locked=true
|
||||||
|
PD1.Mode=CAN_Activate
|
||||||
|
PD1.Signal=CAN1_TX
|
||||||
|
PD14.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
|
||||||
|
PD14.GPIO_Label=BUZZER
|
||||||
|
PD14.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PD14.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
|
PD14.Locked=true
|
||||||
|
PD14.Signal=S_TIM4_CH3
|
||||||
|
PE11.GPIOParameters=GPIO_Speed,GPIO_PuPd
|
||||||
|
PE11.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PE11.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PE11.Locked=true
|
||||||
|
PE11.Signal=S_TIM1_CH2
|
||||||
|
PE13.GPIOParameters=GPIO_Speed,GPIO_PuPd
|
||||||
|
PE13.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PE13.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PE13.Locked=true
|
||||||
|
PE13.Signal=S_TIM1_CH3
|
||||||
|
PE14.GPIOParameters=GPIO_Speed,GPIO_PuPd
|
||||||
|
PE14.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PE14.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PE14.Locked=true
|
||||||
|
PE14.Signal=S_TIM1_CH4
|
||||||
|
PE9.GPIOParameters=GPIO_Speed,GPIO_PuPd
|
||||||
|
PE9.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PE9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PE9.Locked=true
|
||||||
|
PE9.Signal=S_TIM1_CH1
|
||||||
|
PF0.GPIOParameters=GPIO_Pu
|
||||||
|
PF0.GPIO_Pu=GPIO_PULLUP
|
||||||
|
PF0.Locked=true
|
||||||
|
PF0.Mode=I2C
|
||||||
|
PF0.Signal=I2C2_SDA
|
||||||
|
PF1.GPIOParameters=GPIO_Pu
|
||||||
|
PF1.GPIO_Pu=GPIO_PULLUP
|
||||||
|
PF1.Locked=true
|
||||||
|
PF1.Mode=I2C
|
||||||
|
PF1.Signal=I2C2_SCL
|
||||||
|
PF10.GPIOParameters=GPIO_Label
|
||||||
|
PF10.GPIO_Label=ADC_BAT
|
||||||
|
PF10.Locked=true
|
||||||
|
PF10.Mode=IN8
|
||||||
|
PF10.Signal=ADC3_IN8
|
||||||
|
PF6.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
|
||||||
|
PF6.GPIO_Label=IMU_HEAT_PWM
|
||||||
|
PF6.GPIO_PuPd=GPIO_PULLDOWN
|
||||||
|
PF6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PF6.Locked=true
|
||||||
|
PF6.Signal=S_TIM10_CH1
|
||||||
|
PG14.Locked=true
|
||||||
|
PG14.Mode=Asynchronous
|
||||||
|
PG14.Signal=USART6_TX
|
||||||
|
PG3.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||||
|
PG3.GPIO_Label=CMPS_INT
|
||||||
|
PG3.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||||
|
PG3.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PG3.Locked=true
|
||||||
|
PG3.Signal=GPXTI3
|
||||||
|
PG6.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
|
||||||
|
PG6.GPIO_Label=CMPS_RST
|
||||||
|
PG6.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PG6.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
|
||||||
|
PG6.Locked=true
|
||||||
|
PG6.PinState=GPIO_PIN_RESET
|
||||||
|
PG6.Signal=GPIO_Output
|
||||||
|
PG9.Locked=true
|
||||||
|
PG9.Mode=Asynchronous
|
||||||
|
PG9.Signal=USART6_RX
|
||||||
|
PH0-OSC_IN.Mode=HSE-External-Oscillator
|
||||||
|
PH0-OSC_IN.Signal=RCC_OSC_IN
|
||||||
|
PH1-OSC_OUT.Mode=HSE-External-Oscillator
|
||||||
|
PH1-OSC_OUT.Signal=RCC_OSC_OUT
|
||||||
|
PH10.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
|
||||||
|
PH10.GPIO_Label=LED_B
|
||||||
|
PH10.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PH10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PH10.Locked=true
|
||||||
|
PH10.Signal=S_TIM5_CH1
|
||||||
|
PH11.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
|
||||||
|
PH11.GPIO_Label=LED_G
|
||||||
|
PH11.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PH11.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PH11.Locked=true
|
||||||
|
PH11.Signal=S_TIM5_CH2
|
||||||
|
PH12.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
|
||||||
|
PH12.GPIO_Label=LED_R
|
||||||
|
PH12.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PH12.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PH12.Locked=true
|
||||||
|
PH12.Signal=S_TIM5_CH3
|
||||||
|
PI6.GPIOParameters=GPIO_Speed,GPIO_PuPd
|
||||||
|
PI6.GPIO_PuPd=GPIO_PULLUP
|
||||||
|
PI6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
|
PI6.Signal=S_TIM8_CH2
|
||||||
|
PinOutPanel.CurrentBGAView=Top
|
||||||
|
PinOutPanel.RotationAngle=0
|
||||||
|
ProjectManager.AskForMigrate=true
|
||||||
|
ProjectManager.BackupPrevious=false
|
||||||
|
ProjectManager.CompilerLinker=GCC
|
||||||
|
ProjectManager.CompilerOptimize=6
|
||||||
|
ProjectManager.ComputerToolchain=false
|
||||||
|
ProjectManager.CoupleFile=true
|
||||||
|
ProjectManager.CustomerFirmwarePackage=
|
||||||
|
ProjectManager.DefaultFWLocation=true
|
||||||
|
ProjectManager.DeletePrevious=true
|
||||||
|
ProjectManager.DeviceId=STM32F407IGHx
|
||||||
|
ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.3
|
||||||
|
ProjectManager.FreePins=false
|
||||||
|
ProjectManager.HalAssertFull=true
|
||||||
|
ProjectManager.HeapSize=0x1000
|
||||||
|
ProjectManager.KeepUserCode=true
|
||||||
|
ProjectManager.LastFirmware=true
|
||||||
|
ProjectManager.LibraryCopy=0
|
||||||
|
ProjectManager.MainLocation=Core/Src
|
||||||
|
ProjectManager.NoMain=false
|
||||||
|
ProjectManager.PreviousToolchain=
|
||||||
|
ProjectManager.ProjectBuild=false
|
||||||
|
ProjectManager.ProjectFileName=DevC.ioc
|
||||||
|
ProjectManager.ProjectName=DevC
|
||||||
|
ProjectManager.ProjectStructure=
|
||||||
|
ProjectManager.RegisterCallBack=
|
||||||
|
ProjectManager.StackSize=0x1000
|
||||||
|
ProjectManager.TargetToolchain=CMake
|
||||||
|
ProjectManager.ToolChainLocation=
|
||||||
|
ProjectManager.UAScriptAfterPath=
|
||||||
|
ProjectManager.UAScriptBeforePath=
|
||||||
|
ProjectManager.UnderRoot=false
|
||||||
|
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_ADC3_Init-ADC3-false-HAL-true,6-MX_CAN1_Init-CAN1-false-HAL-true,7-MX_CAN2_Init-CAN2-false-HAL-true,8-MX_I2C1_Init-I2C1-false-HAL-true,9-MX_SPI1_Init-SPI1-false-HAL-true,10-MX_TIM4_Init-TIM4-false-HAL-true,11-MX_TIM5_Init-TIM5-false-HAL-true,12-MX_USART3_UART_Init-USART3-false-HAL-true,13-MX_TIM8_Init-TIM8-false-HAL-true,14-MX_CRC_Init-CRC-false-HAL-true,15-MX_RNG_Init-RNG-false-HAL-true,16-MX_I2C2_Init-I2C2-false-HAL-true,17-MX_I2C3_Init-I2C3-false-HAL-true,18-MX_SPI2_Init-SPI2-false-HAL-true,19-MX_TIM1_Init-TIM1-false-HAL-true,20-MX_TIM3_Init-TIM3-false-HAL-true,21-MX_TIM10_Init-TIM10-false-HAL-true,22-MX_USART1_UART_Init-USART1-false-HAL-true,23-MX_USART6_UART_Init-USART6-false-HAL-true,24-MX_TIM7_Init-TIM7-false-HAL-true,25-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false
|
||||||
|
RCC.48MHZClocksFreq_Value=48000000
|
||||||
|
RCC.AHBFreq_Value=168000000
|
||||||
|
RCC.APB1CLKDivider=RCC_HCLK_DIV4
|
||||||
|
RCC.APB1Freq_Value=42000000
|
||||||
|
RCC.APB1TimFreq_Value=84000000
|
||||||
|
RCC.APB2CLKDivider=RCC_HCLK_DIV2
|
||||||
|
RCC.APB2Freq_Value=84000000
|
||||||
|
RCC.APB2TimFreq_Value=168000000
|
||||||
|
RCC.CortexFreq_Value=168000000
|
||||||
|
RCC.EthernetFreq_Value=168000000
|
||||||
|
RCC.FCLKCortexFreq_Value=168000000
|
||||||
|
RCC.FamilyName=M
|
||||||
|
RCC.HCLKFreq_Value=168000000
|
||||||
|
RCC.HSE_VALUE=12000000
|
||||||
|
RCC.HSI_VALUE=16000000
|
||||||
|
RCC.I2SClocksFreq_Value=192000000
|
||||||
|
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,RCC_RTC_Clock_Source,RCC_RTC_Clock_SourceVirtual,RCC_RTC_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
|
||||||
|
RCC.LSE_VALUE=32768
|
||||||
|
RCC.LSI_VALUE=32000
|
||||||
|
RCC.MCO2PinFreq_Value=168000000
|
||||||
|
RCC.PLLCLKFreq_Value=168000000
|
||||||
|
RCC.PLLM=6
|
||||||
|
RCC.PLLN=168
|
||||||
|
RCC.PLLQ=7
|
||||||
|
RCC.PLLQCLKFreq_Value=48000000
|
||||||
|
RCC.RCC_RTC_Clock_Source=RCC_RTCCLKSOURCE_LSI
|
||||||
|
RCC.RCC_RTC_Clock_SourceVirtual=RCC_RTCCLKSOURCE_HSE_DIV30
|
||||||
|
RCC.RCC_RTC_Clock_Source_FROM_HSE=RCC_RTCCLKSOURCE_HSE_DIV30
|
||||||
|
RCC.RTCFreq_Value=32000
|
||||||
|
RCC.RTCHSEDivFreq_Value=400000
|
||||||
|
RCC.SYSCLKFreq_VALUE=168000000
|
||||||
|
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||||
|
RCC.VCOI2SOutputFreq_Value=384000000
|
||||||
|
RCC.VCOInputFreq_Value=2000000
|
||||||
|
RCC.VCOOutputFreq_Value=336000000
|
||||||
|
RCC.VcooutputI2S=192000000
|
||||||
|
SH.GPXTI0.0=GPIO_EXTI0
|
||||||
|
SH.GPXTI0.ConfNb=1
|
||||||
|
SH.GPXTI3.0=GPIO_EXTI3
|
||||||
|
SH.GPXTI3.ConfNb=1
|
||||||
|
SH.GPXTI4.0=GPIO_EXTI4
|
||||||
|
SH.GPXTI4.ConfNb=1
|
||||||
|
SH.GPXTI5.0=GPIO_EXTI5
|
||||||
|
SH.GPXTI5.ConfNb=1
|
||||||
|
SH.S_TIM10_CH1.0=TIM10_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM10_CH1.ConfNb=1
|
||||||
|
SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM1_CH1.ConfNb=1
|
||||||
|
SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
|
||||||
|
SH.S_TIM1_CH2.ConfNb=1
|
||||||
|
SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM1_CH3.ConfNb=1
|
||||||
|
SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4
|
||||||
|
SH.S_TIM1_CH4.ConfNb=1
|
||||||
|
SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM3_CH3.ConfNb=1
|
||||||
|
SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM4_CH3.ConfNb=1
|
||||||
|
SH.S_TIM5_CH1.0=TIM5_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM5_CH1.ConfNb=1
|
||||||
|
SH.S_TIM5_CH2.0=TIM5_CH2,PWM Generation2 CH2
|
||||||
|
SH.S_TIM5_CH2.ConfNb=1
|
||||||
|
SH.S_TIM5_CH3.0=TIM5_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM5_CH3.ConfNb=1
|
||||||
|
SH.S_TIM8_CH1.0=TIM8_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM8_CH1.ConfNb=1
|
||||||
|
SH.S_TIM8_CH2.0=TIM8_CH2,PWM Generation2 CH2
|
||||||
|
SH.S_TIM8_CH2.ConfNb=1
|
||||||
|
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16
|
||||||
|
SPI1.CLKPhase=SPI_PHASE_2EDGE
|
||||||
|
SPI1.CLKPolarity=SPI_POLARITY_HIGH
|
||||||
|
SPI1.CalculateBaudRate=5.25 MBits/s
|
||||||
|
SPI1.Direction=SPI_DIRECTION_2LINES
|
||||||
|
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase
|
||||||
|
SPI1.Mode=SPI_MODE_MASTER
|
||||||
|
SPI1.VirtualType=VM_MASTER
|
||||||
|
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
|
||||||
|
SPI2.CLKPhase=SPI_PHASE_1EDGE
|
||||||
|
SPI2.CLKPolarity=SPI_POLARITY_LOW
|
||||||
|
SPI2.CalculateBaudRate=656.25 KBits/s
|
||||||
|
SPI2.Direction=SPI_DIRECTION_2LINES
|
||||||
|
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase
|
||||||
|
SPI2.Mode=SPI_MODE_MASTER
|
||||||
|
SPI2.VirtualType=VM_MASTER
|
||||||
|
TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
||||||
|
TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
|
TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
|
||||||
|
TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Prescaler,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,Pulse-PWM Generation4 CH4
|
||||||
|
TIM1.Period=19999
|
||||||
|
TIM1.Prescaler=167
|
||||||
|
TIM1.Pulse-PWM\ Generation1\ CH1=0
|
||||||
|
TIM1.Pulse-PWM\ Generation2\ CH2=0
|
||||||
|
TIM1.Pulse-PWM\ Generation3\ CH3=0
|
||||||
|
TIM1.Pulse-PWM\ Generation4\ CH4=1000
|
||||||
|
TIM10.Channel=TIM_CHANNEL_1
|
||||||
|
TIM10.IPParameters=Channel,Period
|
||||||
|
TIM10.Period=4999
|
||||||
|
TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM3.IPParameters=Channel-PWM Generation3 CH3,Period
|
||||||
|
TIM3.Period=65535
|
||||||
|
TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM4.IPParameters=Channel-PWM Generation3 CH3,Prescaler,Period
|
||||||
|
TIM4.Period=65535
|
||||||
|
TIM4.Prescaler=167
|
||||||
|
TIM5.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
||||||
|
TIM5.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
|
TIM5.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM5.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Prescaler,Period
|
||||||
|
TIM5.Period=65535
|
||||||
|
TIM5.Prescaler=0
|
||||||
|
TIM7.IPParameters=Period,Prescaler
|
||||||
|
TIM7.Period=9
|
||||||
|
TIM7.Prescaler=83
|
||||||
|
TIM8.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
||||||
|
TIM8.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
|
TIM8.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2
|
||||||
|
TIM8.Period=19999
|
||||||
|
TIM8.Prescaler=167
|
||||||
|
TIM8.Pulse-PWM\ Generation1\ CH1=1000
|
||||||
|
TIM8.Pulse-PWM\ Generation2\ CH2=1000
|
||||||
|
USART1.IPParameters=VirtualMode
|
||||||
|
USART1.VirtualMode=VM_ASYNC
|
||||||
|
USART3.BaudRate=100000
|
||||||
|
USART3.IPParameters=VirtualMode,BaudRate,Parity,Mode
|
||||||
|
USART3.Mode=MODE_RX
|
||||||
|
USART3.Parity=PARITY_EVEN
|
||||||
|
USART3.VirtualMode=VM_ASYNC
|
||||||
|
USART6.IPParameters=VirtualMode
|
||||||
|
USART6.VirtualMode=VM_ASYNC
|
||||||
|
USB_DEVICE.CLASS_NAME_FS=CDC
|
||||||
|
USB_DEVICE.IPParameters=VirtualMode-CDC_FS,VirtualModeFS,CLASS_NAME_FS
|
||||||
|
USB_DEVICE.VirtualMode-CDC_FS=Cdc
|
||||||
|
USB_DEVICE.VirtualModeFS=Cdc_FS
|
||||||
|
USB_OTG_FS.IPParameters=VirtualMode
|
||||||
|
USB_OTG_FS.VirtualMode=Device_Only
|
||||||
|
VP_ADC1_TempSens_Input.Mode=IN-TempSens
|
||||||
|
VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input
|
||||||
|
VP_ADC1_Vref_Input.Mode=IN-Vrefint
|
||||||
|
VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input
|
||||||
|
VP_CRC_VS_CRC.Mode=CRC_Activate
|
||||||
|
VP_CRC_VS_CRC.Signal=CRC_VS_CRC
|
||||||
|
VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2
|
||||||
|
VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2
|
||||||
|
VP_RNG_VS_RNG.Mode=RNG_Activate
|
||||||
|
VP_RNG_VS_RNG.Signal=RNG_VS_RNG
|
||||||
|
VP_SYS_VS_Systick.Mode=SysTick
|
||||||
|
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||||
|
VP_TIM10_VS_ClockSourceINT.Mode=Enable_Timer
|
||||||
|
VP_TIM10_VS_ClockSourceINT.Signal=TIM10_VS_ClockSourceINT
|
||||||
|
VP_TIM1_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
|
||||||
|
VP_TIM3_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
|
||||||
|
VP_TIM4_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
|
||||||
|
VP_TIM5_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT
|
||||||
|
VP_TIM7_VS_ClockSourceINT.Mode=Enable_Timer
|
||||||
|
VP_TIM7_VS_ClockSourceINT.Signal=TIM7_VS_ClockSourceINT
|
||||||
|
VP_TIM8_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT
|
||||||
|
VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS
|
||||||
|
VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS
|
||||||
|
board=custom
|
||||||
|
rtos.0.ip=FREERTOS
|
||||||
93
assets/User_code/task/template_task/atti_esti.c
Normal file
93
assets/User_code/task/template_task/atti_esti.c
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
atti_esti Task
|
||||||
|
带有pwm温控的纯陀螺仪(BMI088)姿态解算任务(无磁力计,赛场环境一般不适用)。
|
||||||
|
控制IMU加热到指定温度防止温漂,收集IMU数据给AHRS算法。
|
||||||
|
收集BMI088的数据,解算后得到四元数,转换为欧拉角之后放到消息队列中,
|
||||||
|
等待其他任务取用。
|
||||||
|
陀螺仪使用前需要校准,校准结果保存在bmi088_cali结构体中,需要自行实现。
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Includes ----------------------------------------------------------------- */
|
||||||
|
#include "task/user_task.h"
|
||||||
|
/* USER INCLUDE BEGIN */
|
||||||
|
|
||||||
|
#include "bsp/mm.h"
|
||||||
|
#include "bsp/pwm.h"
|
||||||
|
#include "component/ahrs.h"
|
||||||
|
#include "component/pid.h"
|
||||||
|
#include "device/bmi088.h"
|
||||||
|
/* USER INCLUDE END */
|
||||||
|
|
||||||
|
/* Private typedef ---------------------------------------------------------- */
|
||||||
|
/* Private define ----------------------------------------------------------- */
|
||||||
|
/* Private macro ------------------------------------------------------------ */
|
||||||
|
/* Private variables -------------------------------------------------------- */
|
||||||
|
/* USER STRUCT BEGIN */
|
||||||
|
BMI088_t bmi088;
|
||||||
|
AHRS_t gimbal_ahrs;
|
||||||
|
AHRS_Magn_t magn;
|
||||||
|
AHRS_Eulr_t eulr_to_send;
|
||||||
|
KPID_t imu_temp_ctrl_pid;
|
||||||
|
|
||||||
|
/*默认校准参数*/
|
||||||
|
BMI088_Cali_t cali_bmi088 = {
|
||||||
|
.gyro_offset = {0.0f, 0.0f, 0.0f},
|
||||||
|
};
|
||||||
|
|
||||||
|
static const KPID_Params_t imu_temp_ctrl_pid_param = {
|
||||||
|
.k = 0.15f,
|
||||||
|
.p = 1.0f,
|
||||||
|
.i = 0.0f,
|
||||||
|
.d = 0.0f,
|
||||||
|
.i_limit = 1.0f,
|
||||||
|
.out_limit = 1.0f,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* USER STRUCT END */
|
||||||
|
|
||||||
|
/* Private function --------------------------------------------------------- */
|
||||||
|
/* Exported functions ------------------------------------------------------- */
|
||||||
|
void Task_atti_esti(void *argument) {
|
||||||
|
(void)argument; /* 未使用argument,消除警告 */
|
||||||
|
|
||||||
|
|
||||||
|
osDelay(ATTI_ESTI_INIT_DELAY); /* 延时一段时间再开启任务 */
|
||||||
|
|
||||||
|
/* USER CODE INIT BEGIN */
|
||||||
|
BMI088_Init(&bmi088, &cali_bmi088);
|
||||||
|
AHRS_Init(&gimbal_ahrs, &magn, BMI088_GetUpdateFreq(&bmi088));
|
||||||
|
PID_Init(&imu_temp_ctrl_pid, KPID_MODE_NO_D,
|
||||||
|
1.0f / BMI088_GetUpdateFreq(&bmi088), &imu_temp_ctrl_pid_param);
|
||||||
|
BSP_PWM_Start(BSP_PWM_IMU_HEAT);
|
||||||
|
|
||||||
|
/* USER CODE INIT END */
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
/* USER CODE BEGIN */
|
||||||
|
BMI088_WaitNew();
|
||||||
|
BMI088_AcclStartDmaRecv();
|
||||||
|
BMI088_AcclWaitDmaCplt();
|
||||||
|
|
||||||
|
BMI088_GyroStartDmaRecv();
|
||||||
|
BMI088_GyroWaitDmaCplt();
|
||||||
|
|
||||||
|
/* 锁住RTOS内核防止数据解析过程中断,造成错误 */
|
||||||
|
osKernelLock();
|
||||||
|
/* 接收完所有数据后,把数据从原始字节加工成方便计算的数据 */
|
||||||
|
BMI088_ParseAccl(&bmi088);
|
||||||
|
BMI088_ParseGyro(&bmi088);
|
||||||
|
|
||||||
|
/* 根据设备接收到的数据进行姿态解析 */
|
||||||
|
AHRS_Update(&gimbal_ahrs, &bmi088.accl, &bmi088.gyro, &magn);
|
||||||
|
|
||||||
|
/* 根据解析出来的四元数计算欧拉角 */
|
||||||
|
AHRS_GetEulr(&eulr_to_send, &gimbal_ahrs);
|
||||||
|
osKernelUnlock();
|
||||||
|
|
||||||
|
BSP_PWM_SetComp(BSP_PWM_IMU_HEAT, PID_Calc(&imu_temp_ctrl_pid, 40.5f,
|
||||||
|
bmi088.temp, 0.0f, 0.0f));
|
||||||
|
|
||||||
|
/* USER CODE END */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
18
assets/User_code/task/template_task/task.yaml
Normal file
18
assets/User_code/task/template_task/task.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
atti_esti:
|
||||||
|
name: "atti_esti"
|
||||||
|
frequency: 1000
|
||||||
|
delay: 100
|
||||||
|
stack: 512
|
||||||
|
freq_control: false
|
||||||
|
description: |
|
||||||
|
带有PWM温控的纯陀螺仪(BMI088)姿态解算任务
|
||||||
|
功能特点:
|
||||||
|
- 控制IMU加热到指定温度防止温漂
|
||||||
|
- 收集BMI088数据给AHRS算法进行姿态解算
|
||||||
|
- 解算后得到四元数,转换为欧拉角放到消息队列
|
||||||
|
- 使用PID控制IMU温度到40.5°C
|
||||||
|
- 运行频率1000Hz,提供高精度姿态信息
|
||||||
|
注意事项:
|
||||||
|
- 陀螺仪使用前需要校准,校准结果保存在bmi088_cali结构体中
|
||||||
|
- 无磁力计版本,适用于干净的电磁环境
|
||||||
|
- 需要配置PWM通道用于IMU加热控制
|
||||||
Loading…
Reference in New Issue
Block a user