头像-144023

donatello

  • 广东省
  • 单片机
  • 计算机网络

个人成就

获得 764 次赞

帮助过2499人

带CS引脚的SPI液晶屏的CS接地 单片机综合应用

如题,有些用四个IO驱动的SPI液晶屏,其中带有CS片选引脚,有些程序为了省事直接将CS引脚接地,请问,CS引脚一直接地会影响实际使用吗,还是一定要接一个GPIO呢?​

空结构体大小 嵌入式

有如下程序:struct A{};int main(){struct A a; printf("%d %d",sizeof(A),sizeof(a));} 一般一个空结构体大小都是1,但是在某些GCC编译器的IDE上却会认为都是0,请问这个是什么原因呢?

Nanopi登录VNC灰屏 NanoPi

如题,已经装了xfce4,这是什么原因呢?

有人知道这两个烧录FLASH选项的差异吗? STM32

       如题,是STM32L4R5ZI的板子,FLASH空间有2M,在烧录的时候有两个2M的选项,一个有Dual关键字,一个没有,没有Dual关键字的选项会报错,请问大家知道这是为什么吗?​

MDK注释文字 DIY创客

​如题,有些软件库的注释加的位置极其反人类,几行的还好,几十几百行就非常麻烦了,请问有没有好方法可以批量删除或者批量移动呢?​

LPC单片机下载程序时报错 单片机综合应用

​这个错误不定时无规律出现,一旦出错,必须要将flash内的程序删除并用新程序覆盖才可以解决,请问各位大佬,LPC单片机出现这个报错一般是什么原因呢?​

LPC单片机中IOCON_PIO_MODE_INACT位 单片机综合应用

在LPC单片机的GPIO引脚初始化中会看到一个IOCON_PIO_MODE_INACT位,按照官方的解释就是No addition pin function,不增加额外的引脚功能,但是有些场合中会看到,即使引脚已经被复用为功能1(IOCON_PIO_FUNC1),也会有IOCON_PIO_MODE_INACT位的说明,请问各位大佬,这个是怎么回事呢?​

F103板子RAM和串口DMA的问题 STM32

       如题,使用F103板子测试串口1接收DMA,同样的程序,在F103C8T6上报错,在F103CBT6上正常运行,将启动.s文件换成startup_stm32f103x6.s也是这样,初步判断是RAM大小的问题,那么,有没有解决方法呢?能不能让这个程序在F103C8T6上正常运行呢?#define BUFFERSIZE 200 uint8_t ReceiveBuff[BUFFERSIZE]; uint8_t recv_end_flag = 0,Rx_len; UART_HandleTypeDef huart1; DMA_HandleTypeDef hdma_usart1_rx; GPIO_InitTypeDef GPIO_InitStruct; void UART1_Init(int baud) { __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_DMA1_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); huart1.Instance = USART1; huart1.Init.BaudRate = baud; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart1); __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE); HAL_NVIC_SetPriority(USART1_IRQn,0,0); HAL_NVIC_EnableIRQ(USART1_IRQn); hdma_usart1_rx.Instance = DMA1_Channel5; hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_usart1_rx.Init.Mode = DMA_NORMAL; hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW; HAL_DMA_Init(&hdma_usart1_rx); __HAL_LINKDMA(&huart1,hdmarx,hdma_usart1_rx); HAL_NVIC_SetPriority(DMA1_Channel5_IRQn,1,2); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); } void USART1_IRQHandler() { HAL_UART_IRQHandler(&huart1); uint32_t temp; if(USART1 == huart1.Instance) { if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)) { __HAL_UART_CLEAR_IDLEFLAG(&huart1); HAL_UART_DMAStop(&huart1); temp = __HAL_DMA_GET_COUNTER(&hdma_usart1_rx); Rx_len = BUFFERSIZE - temp; recv_end_flag = 1; } } } int fputc(int ch,FILE *f) { while(!(USART1->SR&(1<<7))); USART1->DR=ch; return ch; } void UART1_DMA_Get() { if(recv_end_flag==1) { printf("rx_len=%d\n",Rx_len); printf("%s\n",ReceiveBuff); for(int i=0;i<Rx_len;i++) ReceiveBuff[i]=0; Rx_len=0; recv_end_flag=0; } HAL_UART_Receive_DMA(&huart1,(uint8_t*)ReceiveBuff,BUFFERSIZE); }