标签: hal

未生成STM32 HAL UART RXNE中断

我正在使用HAL驱动程序和CubeMX生成的代码.在我打电话的主要例程中HAL_UART_Receive_IT().通过UART传输数据(以环回方式连接)后,我可以看到模块正在接收字节并在寄存器中设置RXNE位.但是没有产生中断?我无法解释为什么......在HAL_UART_Receive_IT()函数中有代码启用中断,所以有什么问题?

hal interrupt stm32 uart

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

嵌入式系统的硬件独立 C++ HAL

我正在研究如何实现自定义 C++ HAL,该 HAL 面向多个微控制器,可能具有不同的架构(ARM、AVR、PIC 等),同时保持一切正常。

我继承了几个大型的、凌乱的代码库,它们在当前状态下无法维护,因此需要更结构化的东西。

在挑选了许多优秀的文章和设计指南后,我正在考虑PIMPL实施。

考虑以下 UART/串行端口示例:

// -----------------------------
// High-level HAL
// -----------------------------

// serialport.h
class SerialPortPrivate;

class SerialPort {

public:
    SerialPort(uint8_t portNumber);
    ~SerialPort();

    bool open();
    void close();

    void setBaudRate(uint32_t baudRate = 115200);

private:
    SerialPortPrivate *_impl;
};   
Run Code Online (Sandbox Code Playgroud)
// serialport_p.h
class SerialPort;

class SerialPortPrivate {

public:
    SerialPortPrivate(uint8_t portNumber, SerialPort *parent) {
        // Store the parent (q_ptr)
        _parent = parent;

        // Store the port number, this is used to access UART
        // specific registers UART->D[portNumber] = …
Run Code Online (Sandbox Code Playgroud)

c++ embedded hal

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

C、硬件抽象层中“extern”类型的变量

我正在研究硬件抽象层。此 HAL 的目的是在 Linux 驱动程序和 MCU 驱动程序之间轻松切换。

我正在研究 SPI 接口。下面是HAL“打开”SPI接口的函数签名。

hal/spi.h

spi_handle_t spi_open(spi_port_t channel, spi_config_t config);

Run Code Online (Sandbox Code Playgroud)

spi_port_t :

  • 在 Linux 上,它是一个基本类型:uint32_t
  • 在 MCU 上,它是一个结构体。

spi_config_t :

  • 在 Linux 和 MCU 上,它都是一个结构体,但具有不同的字段。

所以在mcu/spi.c 中,我在某个时候有:

typedef spiBASE_t spi_channel_t;
typedef spiDAT1_t spi_config_t;

spi_handle_t spi_open(spi_channel_t channel, spi_config_t config) {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

对于linux/spi.c

typedef uint32_t spi_channel_t;
typedef ChannelConfig_t spi_config_t;

spi_handle_t spi_open(spi_channel_t channel, spi_config_t config) {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

现在问题出在hal/spi.h 中,我需要定义什么是 spi_channel_t 和 spi_config_t。

有没有办法制作类似的东西(我知道用 extern 是不可能的,但为了解释问题......): …

c embedded types hal extern

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

对udev'd设备文件的自动权限?

这是来自SuperUser.com的欺骗.那边的人不够聪明或不愿意帮助我; 也许它比程序员问题更像程序员问题:


我有一个应用程序,可读取4(4)个鼠标的输入,这些鼠标除了内置触摸板外,还通过USB插入.这是Ubuntu的9.10没有问题:哈尔德注意到了新的设备和udev的是他们所谓的品牌新条目/dev/input/mouse4... mouse7.

我的应用程序作为普通用户应用运行./dev属于的文件root和其他任何人都无法读取.

我做了chmod a+r mouse?一次没有问题,但是每次重启时以及每次插入或接出dang啮齿动物时设备都来来去去.

有人可以告诉我一个脚本或其他东西来操纵,所以我chmod自动发生吗?

linux mouse configuration hal udev

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

Spring JPA Query用于获取表中的最新记录

我是Spring JPA的新手.我有一个名为Product的模型.我正在尝试编写一个api终点来获取products表的最近记录.

public static interface Repository extends PagingAndSortingRepository<Product, Long>
   {
      List findTop2ByOrderByIdDesc();
   }
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序HAL浏览器 http:// localhost:8080/api/v1/products/search/findTop2ByOrderByIdDesc

我收到的错误是

{
  "timestamp": 1440573947629,
  "status": 500,
  "error": "Internal Server Error",
  "exception": "org.springframework.dao.IncorrectResultSizeDataAccessException",
  "message": "result returns more than one elements; nested exception is javax.persistence.NonUniqueResultException: result returns more than one elements",
  "path": "/api/v1/products/search/findTop2ByOrderByIdDesc"
}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题.好心提醒

spring hal spring-data spring-data-jpa

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

STM32 HAL - 写入 EEPROM (I2C)

我正在学习在 HAL 中编程,今天我想将一些数据保存到外部 I2C EEPROM。问题是我发送地址后无法让EEPROM发送ACK。我使用 Arduino(在 5V 和 3V 上)进行了尝试,IC 以 ACK 响应。我尝试连接一个 MLX90614 I2C IR 传感器,它工作正常(我得到了响应,我可以在 Arduino 和 STM32 中发送和接收数据)。我还交换了 SDA 和 SCL 引线,认为我可能将它们混合在一起,但事实并非如此。我使用了一个逻辑分析仪,正如你所看到的,我只得到了一个 NACK。我不认为 EEPROM IC (ATMLU036/2EB - AT24C256B) 不喜欢 3V,因为它在 Arduino 中工作,数据表说它即使在较低电压下也能正常工作。我不知道为什么它不工作以及为什么其他 I2C 外围设备(例如 IR 传感器)工作得很好。我正在使用 STM32F429ZI - DISC1。这是我的代码:(简而言之,我将 PB8 引脚用于 SCL,PB9 用于 SDA,我尝试了 100kHz、10kHz、1kHz scl 频率,但没有帮助。在 STM32CubeMX 中我没有改变任何东西 - 线路有内部拉力上电阻)

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f4xx_hal.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
I2C_HandleTypeDef hi2c1;

/* …
Run Code Online (Sandbox Code Playgroud)

hal stm32 i2c eeprom

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

stm32 Hal 库中的回调函数如何工作?

众所周知,Hal Lib 提供了一些回调函数来管理硬件中断。但我不知道它们是如何工作的?

事实上,我正在使用HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)这个函数来接收其他设备的数据并检查这些数据。所以我使用 usart 中断来接收它们。

但是不知道回调函数什么时候执行,是取决于接收缓冲区的长度还是数据的缓冲区?

我猜在接收到一个字符时会触发硬件中断,但是在接收缓冲区已满后会执行回调函数。

PS:本人使用stm32-nucleo-f410开发板与AT指令设备通信,本人新手。(很抱歉我的英语不好!)非常感谢。

hal stm32 at-command

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

STM32 SPI与HAL通信

我刚刚开始对 STM32 进行编程,并使用 CubeMX 生成了一个代码,用于与陀螺仪 (L3GD20) 进行 SPI 通信。我对 HAL_SPI 命令有疑问。

我首先尝试读取WHO_AM_I返回良好响应(0xD4)的寄存器,然后我尝试对寄存器执行相同的操作CTRL_REG1,返回(0x07)仍然很好。

但是,如果我尝试一个接一个地获取它们,则会HAL_SPI_Receive不断发送第一个代码的数据HAL_SPI_Transmit...尝试为其提供其他缓冲区,但仍然不起作用。

这是我感兴趣的代码部分:

    uint8_t txData[8],rxData[8];    //Buffers for the first read.
    uint8_t rBuffer[8];             //Buffer for the second read.
/*...............................................................
 *...............................................................
 *...............................................................
*/...............................................................
  txData[0] = ADDR_WHO_AM_I | 0x80; 
  HAL_SPI_Transmit(&hspi2, txData, 1, HAL_MAX_DELAY);
  HAL_SPI_Receive(&hspi2, rxData, 1, HAL_MAX_DELAY);   //Returns the right value
  HAL_Delay(1000);

  txData[0] = ADDR_CTRL_REG1 | 0x80;
  HAL_Delay(500);
  
  HAL_SPI_Transmit(&hspi2, txData, 1, HAL_MAX_DELAY);
  HAL_SPI_Receive(&hspi2, rBuffer, 1, HAL_MAX_DELAY);  //Returns the same value...
  HAL_Delay(1000);
Run Code Online (Sandbox Code Playgroud)

PS:我还想了解更多有关HAL_SPI_TransmitReceive如果可能的话,我应该如何使用它来执行相同的任务?(从不同的寄存器读取 …

embedded hal spi stm32 stm32f4discovery

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

在驱动程序层之上或之下定义HAL?

在定义嵌入式系统架构时,在定义HAL时有两种选择 -

  • 在驱动程序层上面定义HAL(这意味着需要为您移植到的每个平台重写驱动程序)
  • 在驱动程序层下面定义HAL(这意味着需要为您移植到的每个平台重写HAL)

哪一个更好,为什么?

architecture embedded hal driver

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