头像-161107

drepa

  • 广东省广州市
  • 本科
  • 单片机 嵌入式
  • 消费电子 汽车电子

个人成就

获得 178 次赞

帮助过993人

STM32的串口如何进行HEX发送

如题,我们知道STM32串口一般只能发送单个字符和字符串,即putchar()和printf(),而在工业上,字符串的应用是最少的,应用最多的串口格式是HEX格式,即一个发送一个介于0x00-0xFF的八位字符,那么,STM32的串口是如何发送HEX字符的呢?比如要发送0x30、0xaa和0xff,像串口助手那样是发送1.0x30 0xaa 0xff还是2.0x30 0x20(空格) 0xaa 0x20(空格) 0xff还是3.0x33('3') 0x30('0') 0x61('a') 0x61('a') 0x66('f') 0x66('f')呢?​

外部中断为什么会重复触发呢

​如题,我按一次按键就触发了两次外部中断函数。

标准库外部中断函数

如题,需要在里面加什么回调函数之类的吗?图一为标准库,图二为HAL库。

嵌入式开发板的红外传感器

如题,好像STM32和一些嵌入式开发板如香蕉派、香橙派都有一个黑色的红外传感器,请问这个传感器是只能接收的吗?要怎么接收?手机控制还是电视遥控器控制?

STLINK SWD模式不能把主频调得太高

如题,如果调到4MHz的话,很容易在烧录的时候弹框报错,这是为什么?

S-P-I问题

void SPI1_Init(){  __HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;  GPIO_InitStruct.Pull = GPIO_NOPULL;  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;  GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;  HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);​__HAL_RCC_SPI1_CLK_ENABLE();SPI1_Handler.Instance = SPI1;  SPI1_Handler.Init.Mode = SPI_MODE_MASTER;//SPI主模式  SPI1_Handler.Init.Direction = SPI_DIRECTION_2LINES;//SPI双线模式  SPI1_Handler.Init.DataSize = SPI_DATASIZE_8BIT;//8位帧模式  SPI1_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH;//空闲时为高电平  SPI1_Handler.Init.CLKPhase = SPI_PHASE_2EDGE;//第二个跳变沿开始采样  SPI1_Handler.Init.NSS = SPI_NSS_SOFT;//内部NSS信号由软件控制  SPI1_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256;//2分频  SPI1_Handler.Init.FirstBit = SPI_FIRSTBIT_MSB;//数据传输由高位开始  SPI1_Handler.Init.TIMode = SPI_TIMODE_DISABLE;//关闭TI模式__HAL_SPI_ENABLE(&SPI1_Handler);  HAL_SPI_Init(&SPI1_Handler); SPI1_ReadWriteByte(0xff); __HAL_RCC_DMA2_CLK_ENABLE();DMA2_SPI1_RX.Instance = DMA2_Channel3;DMA2_SPI1_RX.Init.Request = DMA_REQUEST_4;DMA2_SPI1_RX.Init.Direction = DMA_PERIPH_TO_MEMORY;  DMA2_SPI1_RX.Init.PeriphInc = DMA_PINC_DISABLE;  DMA2_SPI1_RX.Init.MemInc = DMA_MINC_ENABLE;  DMA2_SPI1_RX.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;  DMA2_SPI1_RX.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;  DMA2_SPI1_RX.Init.Mode = DMA_CIRCULAR;  DMA2_SPI1_RX.Init.Priority = DMA_PRIORITY_LOW;  HAL_DMA_Init(&DMA2_SPI1_RX);__HAL_LINKDMA(&SPI1_Handler,hdmarx,DMA2_SPI1_RX);DMA2_SPI1_TX.Instance = DMA2_Channel4;  DMA2_SPI1_TX.Init.Request = DMA_REQUEST_4;  DMA2_SPI1_TX.Init.Direction = DMA_MEMORY_TO_PERIPH;  DMA2_SPI1_TX.Init.PeriphInc = DMA_PINC_DISABLE;  DMA2_SPI1_TX.Init.MemInc = DMA_MINC_ENABLE;  DMA2_SPI1_TX.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;  DMA2_SPI1_TX.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;  DMA2_SPI1_TX.Init.Mode = DMA_CIRCULAR;  DMA2_SPI1_TX.Init.Priority = DMA_PRIORITY_LOW;  HAL_DMA_Init(&DMA2_SPI1_TX);  __HAL_LINKDMA(&SPI1_Handler,hdmatx,DMA2_SPI1_TX);}如题,使用SPI1挂载DMA,HAL_SPI_Transmit()函数能用,但是HAL_SPI_Transmit_DMA()函数却不能用,这是什么情况?

STM32有标准库的初始化配置工具吗?

如题,STM32官方的HAL库有CubeMX这个好用的配置工具,那么标准库有没有?