news 2026/6/2 9:42:30

TC397 AUTOSAR EB MCAL STM 配置与ADS测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TC397 AUTOSAR EB MCAL STM 配置与ADS测试

文章目录

    • 前言
    • MCAL STM
    • 硬件连接
    • 软件环境
    • EB配置
      • ResourceM
      • Mcu
      • Stm
      • Irq
    • Mcal Stm 拷贝
    • App代码
      • Irq
      • Stm
      • core0_main
    • Task代码

前言

TC397 的 EB Mcal 配置与测试, 有DIO STM UART CAN FlsLoader CRC, 本篇是 MCAL STM, 照本文描述可复现工程, 故不再提供源码,
嵌入式_机器人_自动驾驶交流QQ群: 1040239879

MCAL STM

本篇目的在于配置和单独测试 Mcal 的 Stm. 最终效果是配置了stm0定时器的两个中断, 一个1ms中断, 一个1s中断, 并且给出了一个简单的task调度实现.

硬件连接

  • MCU: TC397XP, 外部晶振20MHz
  • LED0: P21_0, 低电平点亮

软件环境

  • Mcal: 对应 Autosar CP 4.2.2
  • 配置软件: EB tresos 23.0.0
  • IDE: AURIX™ Development Studio V1.9.4(仅用于学习交流, 以下简称ads)

如何新建工程可参考上篇 MCAL DIO, 本篇主要贴出Stm的EB配置和用户代码.

EB配置

ResourceM

配置多核支持

Mcu

McuClockSettingConfig_0里面默认的McuSTMFrequency时钟100MHz无需修改, 接下来把两个比较器给STM

Stm

Irq

配置stm0的两个中断的中断优先级(0~255, 数字越大, 优先级越高, 0表示禁止中断)

验证生成代码即可

Mcal Stm 拷贝

App代码

Irq

#include"Stm.h"#include"Irq.h"#include"Mcu_17_TimerIp.h"IFX_INTERRUPT(STM0SR0_ISR,0,IRQ_STM0_SR0_PRIO){ENABLE();Mcu_17_Stm_CompareMatchIsr(STM_0,0);*(volatileuint32*)0xF0001040=0x01;/* clear interrupt iscr */}IFX_INTERRUPT(STM0SR1_ISR,0,IRQ_STM0_SR1_PRIO){ENABLE();Mcu_17_Stm_CompareMatchIsr(STM_0,1);}

Stm

#include"IfxSrc_reg.h"voidstm_callback0(void){}voidstm_callback1(void){Dio_FlipChannel(DioConf_DioChannel_LED0);}voidapp_stm_init(floatperiod0,floatperiod1){Stm_EnableModule(STM_0);IrqStm_Init();SRC_STM0SR0.B.SRE=1U;SRC_STM0SR1.B.SRE=1U;uint32 tick=(uint32)(Ifx_Ssw_getStmFrequency()*period0);Stm_EnableAlarm(STM_0,0,1,tick,stm_callback0);tick=(uint32)(Ifx_Ssw_getStmFrequency()*period1);Stm_EnableAlarm(STM_0,1,1,tick,stm_callback1);}

core0_main

voidcore0_main(void){volatileunsignedshortLoopFlag=1U;unsignedshortcpuWdtPassword;unsignedshortsafetyWdtPassword;ENABLE();cpuWdtPassword=Ifx_Ssw_getCpuWatchdogPassword(&MODULE_SCU.WDTCPU[0]);safetyWdtPassword=Ifx_Ssw_getSafetyWatchdogPassword();Ifx_Ssw_disableCpuWatchdog(&MODULE_SCU.WDTCPU[0],cpuWdtPassword);Ifx_Ssw_disableSafetyWatchdog(safetyWdtPassword);app_mcu_init();app_port_init();app_stm_init(0.001,1);while(LoopFlag==1U){}}

编译下载运行, LED0每秒翻转一次. 说明 1s 一次的stm_callback1被调用了.

Task代码

可以用1ms中断的stm_callback0实现一个简单的task

volatileunsignedintstm_count0=0;voidstm_callback0(void){stm_count0++;}voidstm_callback1(void){}structnanotask{void(*func)(void);unsignedintperiod;// msunsignedintnext;// ms};voidnanotask0(void){Dio_FlipChannel(DioConf_DioChannel_LED0);}voidnanotask1(void){}structnanotasknanotasks[]={{nanotask0,1000,0},{nanotask1,2000,0},};voidnanotask_init(void){for(inti=0;i<sizeof(nanotasks)/sizeof(nanotasks[0]);i++){nanotasks[i].next=nanotasks[i].period;}}voidnanotask_runone(void){for(inti=0;i<sizeof(nanotasks)/sizeof(nanotasks[0]);i++){if(nanotasks[i].next==0){nanotasks[i].func();nanotasks[i].next=nanotasks[i].period;}else{nanotasks[i].next--;}}}voidcore0_main(void){...app_mcu_init();app_port_init();app_stm_init(0.001,1);nanotask_init();while(LoopFlag==1U){if(stm_count0>0){stm_count0=0;nanotask_runone();}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 13:01:31

预告:九识智能CEO孔旗1月25日参加2026光谷AI产业发展峰会并发言

雷递网 乐天 1月20日由雷递网主办的《2026光谷AI产业发展峰会》将于2026年1月25日下午2点在武汉光谷皇冠假日酒店。本次《2026光谷AI产业发展峰会》的活动主旨是诚邀对武汉感兴趣的企业家、创业者、投资人到武汉交流与发展&#xff0c;探索与发现投资机会。《2026光谷AI产业发展…

作者头像 李华
网站建设 2026/6/1 18:37:27

Buildroot系统adb环境下-各种命令结果乱码

记录一次Buildroot系统adb环境下-各种命令结果乱码 文章目录 前言-需求-场景一、实际效果-问题二、解决方案三、修改后效果四、知识点扩展1、核心概念与特点自动化构建&#xff1a;高度可定制与精简&#xff1a;生成完整镜像&#xff1a;不用于通用桌面/服务器发行版&#xff1…

作者头像 李华
网站建设 2026/6/1 6:58:05

Paraformer处理速度只有3x实时?GPU升级到RTX 4090性能提升实测

Paraformer处理速度只有3x实时&#xff1f;GPU升级到RTX 4090性能提升实测 1. 引言&#xff1a;我们真的需要更快的语音识别吗&#xff1f; 你有没有遇到过这种情况&#xff1a;录了一段5分钟的会议音频&#xff0c;上传到系统后&#xff0c;等了将近一分钟才出结果。虽然已经…

作者头像 李华
网站建设 2026/5/29 14:42:48

如何持续、安全地向大模型注入新知识?

向大模型持续、安全地注入新知识&#xff0c;核心是解决“知识时效性更新”与“原有能力保护”的平衡问题&#xff0c;同时规避过拟合、事实偏差、灾难性遗忘等风险。需结合参数更新、非参数补充、安全管控三大体系&#xff0c;形成全流程解决方案。 一、核心技术路径&#xf…

作者头像 李华
网站建设 2026/5/25 21:00:37

服务器断开连接还能运行?nohup命令的作用解析

服务器断开连接还能运行&#xff1f;nohup命令的作用解析 在使用AI系统或任何长时间运行的服务时&#xff0c;你可能遇到过这样的困扰&#xff1a;通过SSH连接到远程服务器启动了一个程序&#xff0c;但一旦关闭终端或者网络中断&#xff0c;程序就自动停止了。明明计算任务还…

作者头像 李华
网站建设 2026/5/20 23:07:11

如何提升YOLO11训练速度?数据加载优化实战教程

如何提升YOLO11训练速度&#xff1f;数据加载优化实战教程 YOLO11 是当前目标检测领域中极具代表性的新一代模型&#xff0c;延续了 YOLO 系列“快速、准确、轻量”的核心优势&#xff0c;并在架构设计、特征提取与多尺度融合方面进行了深度优化。相比前代版本&#xff0c;它在…

作者头像 李华