带有开发板的.NET Micro Framework与嵌入式编程的Arduino或Nintendo DS相比如何?
.net microcontroller arduino .net-micro-framework nintendo-ds
有没有人知道为C应用程序创建一个可在微控制器(Cortex-M3)上运行的调用树的工具?它可以从源代码(非理想),目标代码(首选解决方案)或运行时(可接受)生成.我看过gprof,但是仍然有很多东西需要它才能在嵌入式系统上运行.
另外一个好处是该工具还可以提供最大的堆栈深度.
更新:解决方案最好是免费的.
作为一个让自己摆脱困境的爱好项目,我想构建一个小程序员计时器设备.它基本上会接受一个程序,它是一个时间列表,然后从每次倒计时.
我想使用C或Java微控制器.我过去曾使用BASIC制作一个小型自主机器人,所以这次我想要一些不同的东西.
你会推荐什么微控制器和显示器?我希望保持简单,所以程序将通过计算机加载到内存中(串口正常,但USB会使它更容易)
我正在使用C语言在微控制器中工作.在这个特定的微观中,必须使用#pragma以下方式定义中断:
static void func();
#pragma INTERRUPT func <interrupt_address> <interrupt_category>
static void func() { /* function body */ }
Run Code Online (Sandbox Code Playgroud)
该<interrupt_address>是向量表的中断地址.的<interrupt_category>是1或2.例如,以限定在端口的中断0销0:
static void _int_p00();
#pragma INTERRUPT _int_p00 0x10 1
static void _int_p00() { (*isr_p00)(); }
Run Code Online (Sandbox Code Playgroud)
我们在别处定义实际的中断服务程序,并使用函数指针(如isr_p00示例中所示)来执行它们.
如果可以使用宏定义中断将是方便的.我想用以下方式定义一个宏:
#define DECLARE_INTERRUPT(INT_NAME, INT_CAT) \
static void _int_##INT_NAME(); \
#pragma INTERRUPT _int_##INT_NAME INT_NAME##_ADDR INT_CAT \
static void _int_##INT_NAME() { (*isr_##INT_NAME)(); }
Run Code Online (Sandbox Code Playgroud)
编译器抛出以下错误:
Formal parameter missing after '#'
Run Code Online (Sandbox Code Playgroud)
指示以下行:
static void _int_##INT_NAME() { (*isr_##INT_NAME)(); }
Run Code Online (Sandbox Code Playgroud)
我想预处理器指令不能在#define …
我正在使用嵌入式主板,但我不知道相同的启动代码(C /汇编)的流程.
在嵌入式系统的情况下,我们是否可以讨论启动操作所采取的一般模块/步骤.
只是高级概述(算法)就足够了.欢迎所有的例子.
/ Kanu__
假设我正在为Arduino(或任何其他微控制器)开发故障安全机制.换句话说,当主控制器发生故障时,辅助微控制器或单独的电路板应该负责.
两种可能的机制如下.
方法1 - 客户端服务器机制
方法2 - 心跳机制
你们有没有更好的机制来实现这个?
我正在使用arm微处理器进行编程,并尝试通过UART使用print语句进行调试.我不想stdlibs只为调试添加.有没有办法打印到控制台没有stdio.h/ iostream.h?我可以写自己的printf()吗?
或者,我可以使用DMA控制器直接写入UART.但是,我想避免这是可能的.使用内置测试功能"echo"或"remote loop-back"我知道我已正确配置UART.
在嵌入式系统中生成随机数的典型方法是什么?您能为每种方法提供优缺点,和/或某些因素可能会让您选择一种方法而不是另一种方法吗?
我试图用STM32L4硬件模块生成CRC.我想验证fatfs文件,所以基本上我有字节数组.我正在使用这个CRC 生成器.
不幸的是我无法弄清楚如何设置STM32L4来生成相同的结果.我需要CRC32而且我有
组态:
hcrc.Instance = CRC;
/* The default polynomial is not used. It is required to defined it in CrcHandle.Init.GeneratingPolynomial*/
hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_DISABLE;
/* Set the value of the polynomial */
hcrc.Init.GeneratingPolynomial = 0x4C11DB7;
//hcrc.Init.GeneratingPolynomial = 0xFB3EE248;
hcrc.Init.CRCLength= CRC_POLYLENGTH_32B;
/* The default init value is used */
/* The default init value is not used */
hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;
/* User init value is used instead */
//hcrc.Init.InitValue = 0;
hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
//hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_BYTE;
/* …Run Code Online (Sandbox Code Playgroud)