问答

汇集网友智慧,解决技术难题

帛灿灿

TA的家园币:1446  

  • 求助!!STM32F407VE DMA+FSMC+LCD,照片显示成4个小图

    之前一直玩103,最近画了块板子F407Ve的,翻出1个之前的LCD,想通过DMA将数组中的图片,搬到FSMC挂的屏由于对407不是很熟,代码大部分都是通过F407ZE的代码,东拼西凑,改来的最终图片是显示出来了,但是被均分成了4小份显示出来了,例如:一张图240*320,变成了4张60*80的小图(不好意思,我上传不了图)然后就是各种线路排出,代码排查。快两个周了,还没找到问题1.DMA将照片搬到u8、u16、u32数组,数据都没有问题(数据顺序),几乎可以排除DMA代码的问题2.如果将数组的数据,按照1个点1个点向LCD写,图片也没问题3.只有在通过DMA将数据通过FSMC搬到LCD时,结果就变成4张小图(有可能是数据错位,1分裂成4了)所以跟人怀疑是FSMC导致的,但是各种试解决不了这是LCD地址#defineTFTLCD_BASE((u32)(0x60000000|0x0001FFFE))//Bank1.sector1+A16#defineTFTLCD((TFTLCD_TypeDef*)TFTLCD_BASE)这是FSMC复用部分配置GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);//PD0FSMC_D2GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);//PD1FSMC_D3GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);//PD4FSMC_NOEGPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC);//PD5FSMC_NWEGPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC);//PD8FSMC_D13GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FSMC);//PD9FSMC_D14GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FSMC);//PD10FSMC_D15GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC);//PD14FSMC_D0GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);//PD15FSMC_D1GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);//PE7FSMC_D4GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FSMC);//PE8FSMC_D5GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FSMC);//PE9FSMC_D6GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FSMC);//PE1

  • 为什么STM32在使用定时器中断的时候ARR的参数不能给0?

    我在使用ETR外部时钟信号时,想实现类似于外部中断的,信号来一次进入一次中断的操作。但是发现当TIM_Period参数给1-1,也就是0时,无法正常进入中断。但是将参数调整为2-1时,来两次信号又可以进入中断,请问这是为什么?uint16_tCount;voidTIM_QuicklyInit(void);intmain(void){TIM_QuicklyInit();OLED_Init();OLED_ShowString(1,1,"Counts:");while(1){OLED_ShowNum(2,1,Count,4);OLED_ShowNum(3,1,TIM_GetCounter(TIM2),1);}}voidTIM_QuicklyInit(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDefGPIOInitstructure;GPIOInitstructure.GPIO_Mode=GPIO_Mode_IPD;GPIOInitstructure.GPIO_Pin=GPIO_Pin_0;GPIOInitstructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIOInitstructure);TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_Inverted,0x0F);TIM_TimeBaseInitTypeDefTimeInitstructure;TimeInitstructure.TIM_CounterMode=TIM_CounterMode_Up;TimeInitstructure.TIM_ClockDivision=TIM_CKD_DIV4;TimeInitstructure.TIM_Period=1-1;TimeInitstructure.TIM_Prescaler=1-1;TimeInitstructure.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM2,&TimeInitstructure);TIM_ClearFlag(TIM2,TIM_FLAG_Update);TIM_Cmd(TIM2,ENABLE);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDefNVICInitstructure;NVICInitstructure.NVIC_IRQChannel=TIM2_IRQn;NVICInitstructure.NVIC_IRQChannelCmd=ENABLE;NVICInitstructure.NVIC_IRQChannelPreemptionPriority=2;NVICInitstructure.NVIC_IRQChannelSubPriority=2;NVIC_Init(&NVICInitstructure);}voidTIM2_IRQHandler(void){if(TIM_GetFlagStatus(TIM2,TIM_IT_Update)==SET)Count++;TIM_ClearFlag(TIM2,TI

    单片机 嵌入式 ST

    2023-09-04 8
  • DS18B20初始化失败,但延时是达到要求的

    用的正点原子的ds18b20驱动,移植到自己的cubemx生成的stm32f103c6t6工程中,无法成功初始化ds18b20在程序中表现为ds18b20不进行应答,超过240微秒.之后通过逻辑分析仪来检测,得到stm32这边确实延时了750微秒,达到拉低总线的要求,并放开了总线,但ds18b20始终不应答相关硬件用在原先的正点原子开发板上正常运作,放到自己的c6t6上就是不工作求问各位朋友,是哪里出问题了

    ST 单片机 嵌入式

    2023-04-02 66
  • lwip 客户端如何让服务器知道主动关闭了

    问题描述:我在ST207上使用lwip实现一个客户端,电脑上有个服务器(网络调试助手),正常情况下,客户端可以正常连接服务器,通信正常;我想要ST207在某些时候主动断开连接,然后在另外一个条件下再次建立连接;我在tcp_client_poll()函数里使用tcp_client_connection_close(tpcb,es);关闭连接,但是上位机的网络调试助手发现不了,应该是ST207缺少通知上位机连接断开请问:在这里断开连接时还需要怎么处理?非常感谢!

    2021-10-27 16