问题标签 [msp432]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何使用 MSP432 DriverLib'c C 代码编写 C++ ISR?
我想将其C++
用作我的微控制器 (MSP432) 项目的主要编程语言。
我写了一些不涉及中断服务例程(ISR )的简单脚本。他们都工作得很好。代码如下所示:
现在我想升级我的代码,使其具有简单的 ISR,例如用于 UART 通信(串行 PC 接口)。所以我这样做了:
这段代码的问题是 ISR 没有被触发。而是调用 DriverLib 中的默认 ISR。我想知道并开始尝试挖掘自己。
在某些时候,我不小心把extern "C"
源代码的 C++ 部分中定义的 ISR 放在了周围。它奏效了:
我假设由于“I”(DriverLib)extern
在源代码的 C(不是 C++)部分中注册了 ISR 向量和 ISR 签名,因此我的 C++ ISR 超出了 ISR 签名的范围。
1)我是对的吗?
但是有一个问题!由于我将C++ ISR 移动到 C上下文中,因此我无法在 ISR 中使用 C++ 代码,例如类等。
2) 如何在不触及 DriverLib 的 ISR 初始化(例如)的情况下将 C++ 保持在源代码的 C++ 部分内的 ISR 内startup_msp432p401r_ccs.c
?
- C++ 的东西是
C++03
- C的东西是
C89
c - 声明指针错误消息:“需要一个标识符”
我试图在我的主板 MSP432 上定义一些指向端口寄存器的指针,但是,在下面的代码中,当我尝试声明我的指针时,我不断收到以下错误:
我尝试了几种不同的替代方法,但不断收到相同的错误并且不知道如何修复它。任何帮助将不胜感激!
c - 尝试使用 timer_A 控制 LED
我正在尝试创建一个代码,该代码接收来自 4x3 键盘的输入,然后将该输入转换为使用 Timer_A 将调整 LED 强度的占空比。但是我的代码不起作用,我想知道代码需要进行哪些更改。代码成功打印了 setLED 中的 J 值,但对 LED 没有影响。我还成功地测试了 Timer_A 本身,以确保电路连接正确。谢谢
rtos - 将 MSP432 freeRTOS 演示项目转换为新鲜空项目
我最近开始学习 RTOS。我需要帮助将 MSP432 freeRTOS 演示项目修改为新项目或为 MSP432 创建新的 freeRTOS 项目。我使用德州仪器的代码编译器工作室。我在网上搜索了所有内容,但没有运气。
c - 编辑 MSP432 .cmd 文件以声明可从内联 ASM 访问的变量
我需要在 CCS IDE 中开发的 TI MSP432 C 项目中设置互斥锁。我没有使用操作系统,但我有几个 ISR 竞争缓冲区资源。
为了获得原子性,我想使用汇编指令,但是我发现很难声明变量以便可以从 __asm 块中访问它。
我应该使用#pragma 指令还是编辑.cmd?有人可以发布类似变量声明案例的完整示例吗?
谢谢
c - FreeRTOS 应用程序堆栈可用内存随时间减少
我有一个在 freeRTOS 上运行的任务,我正在检查这个应用程序中有多少应用程序堆栈未使用。我看到的是,可用堆栈内存在一段时间后会减少并长时间保持在该值。该任务有一个 while(1) 循环,应该使用相同数量的堆栈,但是我不明白为什么在循环的一些迭代之后堆栈会被用完。这是我的任务的样子:
我的堆栈应该具有与 while 循环的第一次迭代相同的自由字。但是,我看到一段时间后 GetStackHighWaterMark 返回的免费字数减少了,我无法解释这一点。
assembly - 如何在 Code Composer Studio (CCS) 中为 TI MSP432 系列创建仅汇编项目
我可以复制一些现有的装配项目,但是有很多与之相关的文件,我想知道它们是否有必要。
重新表述这个问题的另一种方式是,我想设置 CCS 或 Eclipse 来构建/安装/调试 MSP432 Launchpad 开发板,最少的步骤和文件是多少。
我问是因为我(将作为另一个问题发布)想设置一个中断(仅在汇编中)以捕获 GPIO 端口上的输入。
我已经阅读了大量的理论,但它们并没有转化为实际的具体步骤。
更新:
对于 STM32 Nucleo,这非常简单。使用arm gcc、gdb和st-link,只需要两个文件。这是一个示例,显示了在重置处理程序中运行的一些代码。但 MSP432 似乎更复杂。
文件链接器.script.ld:
文件核心.S:
编译:
关联:
更新:希望这会有所帮助,如果我能决定什么需要消除,什么需要修改。这是我一直在复制的 Code Composer 中的一个汇编项目。在那个项目树中,“Assembly.asm”是我一直使用的文件。它有我的代码和指令。 组装项目
以下是当前项目编译器包含选项: 编译器包含选项
- 谢谢你
assembly - MSP432 ARM - 使用汇编声明常量数组
如何仅使用程序集而不是 C 在闪存中声明常量数组?
这个问题说明了一切,我相信。除了在汇编代码本身之外,我还想访问和遍历那个常量数组。
我正在使用 MSP432 Code Composer Studio。
相比之下,我知道如何访问 RAM,因为我知道这些地址存在于哪里,而且我的代码可以自由地对它们做任何事情。因此,我可以这样做:
或者,如果我正在访问 GPIO,我知道具体的输入地址:
但是我想要来自已知地址的连续闪存的值,就像上面一样。
更新:
更多更新 我在 Code Composer 中为 MSP432 创建了一个简单的 C 项目。在 main() 中,我有:
当我调试它时,结果就像我想要的一样 - flash 中的一系列常量,在这种情况下位于代码“main()”之后,从 flash address 开始0x000005D0
。之后存储在每个连续位置的数据是我指定的 int 值。
但我想直接组装 - 而不是 C.
构建输出(将显示我想象的工具链)是:
c++ - 绝对编码器十六进制输入
问题:如何从绝对编码器接收输入,使其以十六进制/灰色代码输出到 Arduino?我应该使用digitalRead
oranalogRead
命令吗?我在网上找不到带有绝对编码器的示例代码/项目。
总体目标:我想使用绝对编码器作为项目的旋钮。这个想法是编码器将输出其位置作为要在 case 语句中使用的状态。IE:
case1:analogRead(absEncdr == 00)
arduino 进入空闲程序
case2:analogRead(absEncdr == 11)
arduino 进入按钮程序
ETC
详细信息:绝对编码器类型:25LB22-G 编码器数据表在这里。
我正在使用十六进制/格雷码 4-Bit Binary Code Hexadecimal-16 位置编码器版本
基本上,我不确定如何将这个 abs 编码器读入我的 Arduino。
c - MSP432 编码器计数中断
我正在为一个项目使用 MSP432,我想知道当增量编码器达到指定计数时如何生成中断。中断应阻止电机沿特定方向移动。
背景:我正在使用增量编码器来控制有刷电机。当刷子电机向左或向右移动时,它以机械方式连接到一个增量编码器,该编码器对脉冲或“咔嗒声”进行计数。增量编码器有效地控制了电机的运动极限。即,如果编码器以正确的方向读取 20 个脉冲,则电机应停止。我的项目有两种由 switch-case 语句控制的操作模式。第一种是常规模式,第二种是用户可以通过操纵杆控制电机的模式。无论程序处于哪种模式,当达到运动极限时,电机都应该停止。
伪代码:
同样,无论程序处于何种操作模式,都应该在达到计数时停止。即使已达到运动限制,程序仍应允许操纵杆控制驱动电机远离运动限制。也就是说,如果count == 20在右极限,我仍然可以向左驱动电机。本质上,编码器应该在运行的所有时刻都跟踪电机。
问题: 1. 如何在 MSP432 上声明中断?2. 我可以使用增量编码器作为中断吗?我发现的大多数示例都使用输出高或低信号作为中断标志的按钮。我不确定我可以用编码器做同样的事情