标签: mbed

如何在STM32F4,Cortex M4上写入/读取FLASH

我想写一个变量,例如一个数字为5的整数到FLASH,然后在电源消失后再次打开设备读取它.

我已经知道为了写东西我首先需要擦除页面然后写.

在手册中它说:

  1. 在Flash选项密钥寄存器(FLASH_OPTKEYR)中写入OPTKEY1 = 0x0819 2A3B
  2. 在Flash选项密钥寄存器(FLASH_OPTKEYR)中写入OPTKEY2 = 0x4C5D 6E7F

我该如何执行此任务?

扇区0的块地址从0x0800 0000到0x0800 3FFF,这是我想写的地方.

这里是手册的链接,第71页:STM32手册

c flash-memory mbed stm32f4

8
推荐指数
1
解决办法
2万
查看次数

使用C#通过"USB虚拟串行端口"与USB设备通信?

我最近使用普通USB电缆将USB嵌入式设备(mbed lpc1768)插入Windows 7桌面.根据设备上运行的程序附带的文档,它通过USB虚拟串行端口与主机(桌面)通信.

如果需要使用c#读/写数据,我从哪里开始?我可以使用SerialPort .NET类,还是需要使用LibUsbDotNet库或其他东西?

c# windows usb serial-port mbed

7
推荐指数
1
解决办法
2万
查看次数

无法导入com.android.future.usb。*

我正在按照以下步骤使用ADK通过Android Studio控制mbed

但是他们的mbed adkport代码(向下滚动到adkport超链接)需要这些导入

import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager;
Run Code Online (Sandbox Code Playgroud)

我注意到另一个线程建议开发人员的解决方案是将其切换到android.hardware.usb,但是当我这样做时,由于基于硬件的软件包不支持getAccessorygetInstance符号,因此3行不同

这个问题有解决方案吗?我无法解决

我尝试按照替换代码的步骤使用android.hardware.usb进行替换,但是我仍然遇到了他们自己的android开发人员例程的问题

     //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Run Code Online (Sandbox Code Playgroud)

但是现在它无法识别getSystemService

这是失败的地方。

public void setup(Context context)
{

    //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);  //<-----
    UsbAccessory[] accessoryList = mManager.getAccessoryList();
    PendingIntent mPermissionIntent = PendingIntent.getBroadcast(context, 0,
            new Intent(ACTION_USB_PERMISSION), 0);
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    context.registerReceiver(mUsbReceiver, filter);
    mManager.requestPermission(accessoryList[0], mPermissionIntent);


    if (accessoryList[0] != null) {

        mAccessory = accessoryList[0];
        if(mManager.hasPermission(mAccessory))
        {
        openAccessory(mAccessory);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

android adk mbed

5
推荐指数
1
解决办法
2253
查看次数

mbedtls 中的解密如何进行?

我使用 mbedtls 库编写了以下简单的加密解密程序。加密工作正常(根据http://aes.online-domain-tools.com/检查)。但是,当解密回来时,我得到不正确的结果(输出2输入不同)。我是否滥用了该库?

int main()
{
    mbedtls_aes_context aes;
    mbedtls_aes_context aes2;

    unsigned char key[16] = "itzkbgulrcsjmnv";
    key[15] = 'x';

    unsigned char iv[16] = {0xb2, 0x4b, 0xf2, 0xf7, 0x7a, 0xc5, 0xec, 0x0c, 0x5e, 0x1f, 0x4d, 0xc1, 0xae, 0x46, 0x5e, 0x75};

    const unsigned char *input = (const unsigned char*) "Some string to b";
    unsigned char output[128] = {0};
    unsigned char output2[128] = {0};

    mbedtls_aes_setkey_enc( &aes, key, 16*8 );
    mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, strlen((const char*)input), iv, input, output ); …
Run Code Online (Sandbox Code Playgroud)

c encryption aes mbed

5
推荐指数
1
解决办法
4896
查看次数

ECDHE-PSK mbedTLS的例子?

我试图弄清楚如何使用mbedTLS(以前的PolarSSL)在两个对等体之间执行ECDHE-PSK加密.不幸的是,我没有任何关于API的文章/文档需要使用吗?

encryption polarssl mbed tls1.2

3
推荐指数
1
解决办法
2823
查看次数

当数据存储为uint8_t的向量时如何传递“ char *数据”?

我有一个这样定义的类:

class sco
{
private:

public:
    vector<uint8_t> data;

    sco(vector<uint8_t> data);
    ~sco();

};
Run Code Online (Sandbox Code Playgroud)

构造函数在哪里:

sco::sco(vector<uint8_t> data) {       
    this->data = data;
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个这样声明的函数:

void send(unsigned& id, char* data, char len);
Run Code Online (Sandbox Code Playgroud)

我的问题是我需要将sco成员的数据传递给它,但是类型和指针的区别使我感到困惑。如果我有一个newSco成员,其中包含一些数据,将这个send函数调用为send(someId, (char*)&(newSco.data.begin()), newSco.data.size() );吗?请注意,函数send是针对微控制器的,它采用char类型,因此我无法更改它,也不能更改uint8_t,因为这是来自串行通信的类型。我已经浪费了超过三天的时间,试图将类型转换为相互的东西,只是为了将其反向,因为它破坏了一切。我放弃了,我将不再尝试操纵类型,因为我只是没有时间,即使是不好的做法也只需要它来工作。我以为uint8_t和char大小相同,所以没关系。

c++ c++98 mbed

3
推荐指数
1
解决办法
106
查看次数

Mbed:一些基本问题

我是MbedOS的新手.

关于以下问题我很困惑.

1. yotta和CLI有什么区别?

2.如何将MbedOS移植到我的主板上?

3. Mbed 2.0和3.0有什么区别?

谢谢..

mbed

2
推荐指数
1
解决办法
181
查看次数

如何让一个函数在主循环外循环,直到按下一个按钮

我有一个函数,我想继续运行,直到按下一个按钮(sw2_trig和sw3_trig),这使它进入主循环中的一个模式.问题是,我尝试了while循环和一个执行,同时主循环外循环来实现这一点,但它不能正常工作,它是所有环路的功能,即使我按SW2或SW3我不能进入模式1或2.这是我的代码.

/*********************************************************************
Intereupt Handlers
********************************************************************/

void sw2_interrupt (void) //adapted from driving_test_2
{
    sw2_trig = 1;
}


void sw3_interrupt (void) //adapted from driving_test_2
{
    sw3_trig = 1;
}

/*******************************************************************************
Functions
*******************************************************************************/
//I want to keep this function running until sw2_trig or sw3_trig is pressed inside the main loop.

void furElise() {
    float notes[] = { e, d, e, d, e, b, D, c, _, a, _, c, e, a, b, _, e, g, b, c, _, e, d, e, d, a, …
Run Code Online (Sandbox Code Playgroud)

c++ mbed

1
推荐指数
1
解决办法
438
查看次数

C ++:为什么这段代码给我内存问题/不确定的行为?

如果您有兴趣,可以了解一些背景知识...

下一段代码是尝试使用循环冗余校验(CRC-15)来实现数据包错误代码生成器的尝试。这用于检测通信数据损坏。不需要更详细的介绍。

守则和问题

init_PEC15_Table函数是一个查找表生成器。

pec15函数接受数据输入,计算解决方案的地址,并在查找表中找到结果。

data是一个char数组,我为其分配了值1。这将传递给pec15。

现在,我发现只需重新排序cout命令,“ stuffed pec”(即我感兴趣的输出)的值就会发生变化。通过在线阅读,我了解到这可能是由于内存堆栈意外更改而影响结果寄存器,并且可能是由于其他变量的越界操作所致。我是否理解错误?

现在,我是一个初学者,这非常令人生畏。我可能犯了一些我不知道的重大错误,因此请随时将代码撕碎。同样,如果重要的话,此代码也可以在mbed LPC1768上运行。

#include <iostream>


using namespace std;

unsigned short pec15Table[256];
const unsigned int CRC15_POLY = 0x4599;



void init_PEC15_Table() // Cyclical Redundancy Check lookup table generator function
{
    unsigned short rem;
    for (int i = 0; i < 256; i++)
    {
        rem = i << 7;
        for (int bit = 8; bit > 0; --bit)
        {
            if (rem & 0x4000)
            {
                rem = ((rem << 1));
                rem = (rem ^ …
Run Code Online (Sandbox Code Playgroud)

c++ memory mbed

1
推荐指数
1
解决办法
96
查看次数

奇怪的Python语法?

在GitHub上,我偶然发现了这个页面(https://github.com/mbedmicro/pyOCD),这有助于使用mbed板.然而,当我看着他们的Hello World示例(下图)时,我真的很困惑.它使用极端奇怪的python语法(由于编译器引发错误,因此无效).

这里是 :

from pyOCD.board import MbedBoard

import logging
logging.basicConfig(level=logging.INFO)

board = MbedBoard.chooseBoard()

target = board.target
flash = board.flash
target.resume()
target.halt()

print "pc: 0x%X" % target.readCoreRegister("pc")
    pc: 0xA64

target.step()
print "pc: 0x%X" % target.readCoreRegister("pc")
    pc: 0xA30

target.step()
print "pc: 0x%X" % target.readCoreRegister("pc")
   pc: 0xA32

flash.flashBinary("binaries/l1_lpc1768.bin")
print "pc: 0x%X" % target.readCoreRegister("pc")
   pc: 0x10000000

target.reset()
target.halt()
print "pc: 0x%X" % target.readCoreRegister("pc")
   pc: 0xAAC

board.uninit()
Run Code Online (Sandbox Code Playgroud)

我的问题是pc: 0xAAC代码中出现乱七八糟的" "行.这是一种特殊类型的编码吗?它不起作用,所以有人请指出作者试图得到的东西吗?

谢谢

python mbed

0
推荐指数
1
解决办法
83
查看次数

如何在 STm32 核板 (mbed) 上写入 SRAM

我想在芯片上的 SRAM 中存储一个简单的整数。(Cortex M4) 我用的程序是mbed online。我知道 SRAM 的地址从 0x2000 0000 开始,并且芯片有 4KB 的内存。

我已经阅读了数据表和位带部分,但这对我来说没有意义。

有人可以向我解释我如何在SRAM中存储例如数字5并再次读取它吗?

当前代码是这样的(c是一个整数,用户通过按钮改变):
if(c==100){ temp=c; MBX_B0 = 1; // Word write temp = MBX_B7; // Word read
TIMER_B0 = temp; // Byte write return TIMER_B7; // Byte read } pc.printf("%d",temp);

它只是在 c==100 后停止运行 即使在断电后也应该保存该值。

c stm32 mbed

0
推荐指数
1
解决办法
6789
查看次数

mbed CLI:make.py:错误:找不到 ARM 的可执行文件

我正在尝试使用以下命令使用 mbed CLI 编译程序:

mbed compile -m UBLOX_C027 -t ARM
Run Code Online (Sandbox Code Playgroud)

它导致以下错误:

make.py: error: Could not find executable for ARM.
Currently set search path: No path set
Run Code Online (Sandbox Code Playgroud)

如何设置可执行文件?

c command-line-interface mbed

0
推荐指数
2
解决办法
3323
查看次数

在ac文件中使用C++类

我需要使用mbed api但仅限于使用C.我如何在ac文件中使用例如SPI类.从在线查看使用C++类,您应该在C++中创建一个包装器函数,但正如我所说的,我不能使用C++,这是他们的另一种解决方法吗?

c c++ embedded class mbed

-2
推荐指数
1
解决办法
239
查看次数