标签: hal

展平嵌套对象以将其属性映射到目标对象

我正在尝试使用 AutoMapper 来映射这样的类:

class FooDTO
{
    public int X { get; set; }
    public EmbeddedDTO Embedded { get; set; }
    public class EmbeddedDTO
    {
        public BarDTO Y { get; set; }
        public BazDTO Z { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于这样的类:

class Foo
{
    public int X { get; set; }
    public Bar Y { get; set; }
    public Baz Z { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

FooDTOHAL资源)

我知道我可以通过像这样显式创建地图来做到这一点:

Mapper.CreateMap<FooDTO, Foo>()
      .ForMember(f => f.Y, c => c.MapFrom(f …
Run Code Online (Sandbox Code Playgroud)

c# hal automapper object-object-mapping

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

如何在 STM32F1 上使用 HAL 库保持 uart RX 中断永久启用

我看到 HAL 提供了以下用于通过中断接收串行数据的函数:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
它基本上设置了 rx 中断并返回。
HAL_UART_RxCpltCallback()一旦接收到的字节数达到 就会被调用Size
HAL 在执行此回调之前禁用 rx 中断

问题:
传入字节的数量将是可变的(从 1 到 ~100),我需要将它们放入环形缓冲区中。
因此,我设置Size为 1 并HAL_UART_Receive_IT()在回调内部再次调用以重新启用中断,如果主板时不时地发送 1 或 2 个字节,那么它会很好地工作,但超出这个范围就会丢失字节

我的猜测是它们被错过了,因为它们在中断禁用 - 启用之间到达

有没有办法让中断永远运行而不覆盖 HAL Cube 生成的代码?
如果没有,覆盖相关函数的干净方法是什么?
我是否缺少某些东西可以避免找到此解决方案?

c hal stm32

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

春天 HATEOAS 与 Traverson

我正在使用spring-hateoas:0.18.0.RELEASEspring-boot:1.2.5.RELEASE

为了调用我的 Web 服务并通过HAL链接,我使用Traverson 客户端 (客户端服务遍历的 API,受 Traverson JavaScript 库启发)

Spring Hateoas Traverson 文档

使用HypermediaHateoasRest的新功能

我的问题是什么时候需要使用PagedResourcesResource

我在这里找到的示例 Traverson 客户端示例

 final PagedResources<Resource<Customer>> resources = traverson
            .follow("customers","search","findByFirstName")
            .withTemplateParameters(parameters)
            .toObject(new TypeReferences.PagedResourcesType<Resource<Customer>>(){});
Run Code Online (Sandbox Code Playgroud)

我写的代码是:

ParameterizedTypeReference<Resource<ProjectJSON>> resourceParameterizedTypeReference = new
                ParameterizedTypeReference<Resource<ProjectJSON>>() {};

Resource<ProjectJSON> projectJSONResource = traverson
            .follow("projects")
            .follow("$._embedded.projects[0]._links.self.href")
            .toObject(resourceParameterizedTypeReference);
Run Code Online (Sandbox Code Playgroud)

我知道这不是一回事,但是在调用Traverson.toObject()方法时,资源的最佳实践是什么?

hal hateoas hypermedia spring-hateoas

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

String Hateoas链接到void方法

我正在使用Spring Hateoas来处理HTTP响应中的HAL标准.我的控制器中有一个HTTP DELETE方法,它不返回任何内容(void).在同一实体的响应中,我想提供一个删除资源的链接.我尝试使用以下代码,但它给出了错误

无法解析方法linkTo(void)

    resource.add(linkTo(
            methodOn(DokumenteController.class)
                    .loeschenEinDokument(filenetDokumentZuordnung.getDokumentId()))
                            .withRel("download"));
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以添加一个返回void的方法的链接?

spring hal hateoas spring-hateoas

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

Android Camera2 vs NDK Native Camera API

Android 最近宣布了原生Camera API ,根据他们的说法,它相当于 Java android.hardware.camera2类。我们什么时候应该考虑使用 NDK/C++ API?如果我们使用 C++ 代码,是否有任何性能改进——比如预处理帧?他们的原生 API 是否允许您插入可以作为 HAL3 管道一部分的代码,例如图像处理/计算机视觉代码?

performance hal android-ndk android-camera android-camera2

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

HAL 库中的延迟 (HAL_Delay())

我试图在我的 stm32f4 发现中闪烁 LED。不知何故,它停留在延迟功能上。我已将 SysTick 中断优先级更改为 0 并添加了IncTick(),GetTick()功能。我错过了什么?

#include "stm32f4xx.h"                  // Device header
#include "stm32f4xx_hal.h"              // Keil::Device:STM32Cube HAL:Common


int main(){
    HAL_Init();

    __HAL_RCC_GPIOD_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.Pin = GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_SET);

    HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);   
    HAL_IncTick();
    HAL_GetTick();
    HAL_Delay(100);

    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_RESET);
}
Run Code Online (Sandbox Code Playgroud)

arm hal keil stm32f4discovery

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

stm32l4 RTC HAL无法正常工作

我在带有FreeRTOS的stm32L476上的RTC上有一个奇怪的行为。

它仅在RUN模式下第一次读取,RTC正在工作,因为从运行到运行,它保存了内部寄存器的值并且一直在上升。

另外,如果我在583行的stm32l4xx_hal_rtc.c处放置断点时进行调试,则:

tmpreg = (uint32_t)(hrtc->Instance->TR & RTC_TR_RESERVED_MASK);    
*breakpoint* sTime->Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16);
Run Code Online (Sandbox Code Playgroud)

我可以看到tmpreg和TR寄存器如何更新,然后单击跳转到下一个断点时,显示的内容也相同。

那么,为什么在正常运行时它不起作用?

初始化代码(生成多维数据集MX):

void MX_RTC_Init(void)
{
  RTC_TimeTypeDef sTime;
  RTC_DateTypeDef sDate;

    /**Initialize RTC Only 
    */
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 255;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**Initialize RTC and set the Time and Date 
    */
  if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x32F2){
  sTime.Hours = 0; …
Run Code Online (Sandbox Code Playgroud)

c hal stm32 freertos real-time-clock

4
推荐指数
2
解决办法
4694
查看次数

如何使用HAL锁定和解锁功能?为什么?

我正在尝试理解由另一个程序员编写的代码.它使用I²C通信在STM32微控制器的EEPROM上写入数据.

一般来说,我理解他的代码是如何工作的,但我无法理解他为什么使用HAL_LOCKHAL_UNCLOCK函数.

这些是这些方法的代码:

typedef enum
{
    HAL_UNLOCKED = 0x00U,
    HAL_LOCKED   = 0x01U
} HAL_LockTypeDef;


#if (USE_RTOS == 1)

    /* Reserved for future use */
    #error "USE_RTOS should be 0 in the current HAL release"

#else

  #define __HAL_LOCK(__HANDLE__)                 \
      do{                                        \
          if((__HANDLE__)->Lock == HAL_LOCKED)   \
          {                                      \
             return HAL_BUSY;                    \
          }                                      \
          else                                   \
          {                                      \
             (__HANDLE__)->Lock = HAL_LOCKED;    \
          }                                      \
      } while (0)


  #define __HAL_UNLOCK(__HANDLE__)              \
      do{                                       \
          (__HANDLE__)->Lock = HAL_UNLOCKED;    \
      } …
Run Code Online (Sandbox Code Playgroud)

c hal stm32 i2c

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

HAL_SetDate 将年份设置为错误值

我将 STM32F030RCT6 与 CubeMX 一起使用。设备是一个数据记录器,RTC 是不能失败的主要因素。在勘误表上有一些关于 RTC Shadow Register 的内容。

我将CubeMX配置为不生成MX_RTC_Init()函数,到目前为止它一直正常工作。(我正在使用 LSE)

我需要从 GSM 时间更新时间/日期,但是当我将年份设置为18HAL_SetDate(),经过一段时间的延迟阅读HAL_GetDate()sDate.Year给了我20。除了Year,其他值都是正确的。

我试过的:

  • 二手LSI
  • 而 (HAL_SetDate != HAL_GetDate) HAL_SetDate(ActualDate)
  • HAL_GetDate然后HAL_SetDate

我没有任何进展,事情甚至变得更糟,例如Month= 56、Day= 45 等。

提前致谢。此致。

hal stm32 stm32f0 cubemx

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

在 STOP 模式之前禁用 STM32 HAL IWDG 或 WWDG(看门狗)

我使用 STM32 (L0 5) HAL,在进入 STOP 模式之前,我需要禁用 IWDG 或 WWDG。在 IWDG 将 MCU 从 STOP 模式重置之前,以下代码可以正常工作。对于 WWDG 使用,这要快得多,并且在调用 HAL_PWR_EnterSTOPMode 之前重置,尽管 HAL_WWDG_Refresh 在每行之后调用。我也在 Nucleo L05 上测试了这些场景。

iwdgHandle.Instance = IWDG;
iwdgHandle.Init.Prescaler = IWDG_PRESCALER_64;
iwdgHandle.Init.Window = 4095;
iwdgHandle.Init.Reload = 4095;
if (HAL_IWDG_Init(&iwdgHandle) != HAL_OK) // almost 7secs until refresh has to be called
{
 _Error_Handler(__FILE__, __LINE__);
}

HAL_PWR_EnableWakeUpPin(WakeSpi_Pin);
HAL_PWREx_EnableUltraLowPower(); // Enable Ultra low power mode
HAL_PWREx_EnableFastWakeUp(); // Enable the fast wake up from Ultra low power mode

HAL_SuspendTick();
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
Run Code Online (Sandbox Code Playgroud)

hal watchdog stm32

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