我正在尝试使用 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)
(FooDTO是HAL资源)
我知道我可以通过像这样显式创建地图来做到这一点:
Mapper.CreateMap<FooDTO, Foo>()
.ForMember(f => f.Y, c => c.MapFrom(f …Run Code Online (Sandbox Code Playgroud) 我看到 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 生成的代码?
如果没有,覆盖相关函数的干净方法是什么?
我是否缺少某些东西可以避免找到此解决方案?
我正在使用spring-hateoas:0.18.0.RELEASE和spring-boot:1.2.5.RELEASE
为了调用我的 Web 服务并通过HAL链接,我使用Traverson 客户端 (客户端服务遍历的 API,受 Traverson JavaScript 库启发)
使用Hypermedia和HateoasRest的新功能
我的问题是什么时候需要使用PagedResources和Resource?
我在这里找到的示例 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()方法时,资源的最佳实践是什么?
我正在使用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的方法的链接?
Android 最近宣布了原生Camera API ,根据他们的说法,它相当于 Java android.hardware.camera2类。我们什么时候应该考虑使用 NDK/C++ API?如果我们使用 C++ 代码,是否有任何性能改进——比如预处理帧?他们的原生 API 是否允许您插入可以作为 HAL3 管道一部分的代码,例如图像处理/计算机视觉代码?
我试图在我的 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) 我在带有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) 我正在尝试理解由另一个程序员编写的代码.它使用I²C通信在STM32微控制器的EEPROM上写入数据.
一般来说,我理解他的代码是如何工作的,但我无法理解他为什么使用HAL_LOCK和HAL_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) 我将 STM32F030RCT6 与 CubeMX 一起使用。设备是一个数据记录器,RTC 是不能失败的主要因素。在勘误表上有一些关于 RTC Shadow Register 的内容。
我将CubeMX配置为不生成MX_RTC_Init()函数,到目前为止它一直正常工作。(我正在使用 LSE)
我需要从 GSM 时间更新时间/日期,但是当我将年份设置为18时HAL_SetDate(),经过一段时间的延迟阅读HAL_GetDate(),sDate.Year给了我20。除了Year,其他值都是正确的。
我试过的:
HAL_GetDate然后HAL_SetDate我没有任何进展,事情甚至变得更糟,例如Month= 56、Day= 45 等。
提前致谢。此致。
我使用 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 ×10
stm32 ×5
c ×3
hateoas ×2
android-ndk ×1
arm ×1
automapper ×1
c# ×1
cubemx ×1
freertos ×1
hypermedia ×1
i2c ×1
keil ×1
performance ×1
spring ×1
stm32f0 ×1
watchdog ×1