当前位置: 首页 > news >正文

电子商务网站建设与管理课程的感想给我免费的视频在线观看

电子商务网站建设与管理课程的感想,给我免费的视频在线观看,北京网易公司是做什么的,深圳 网站设计公司排名本文章仅仅简单记录32单片机的SPIDMA驱动显示屏的性能测试,这里不花费时间介绍SPI和DMA。 硬件材料:SPI显示屏一个,32单片机 软件材料: 1.LCD的SPI驱动显示程序(SPI / SPIDMA): (1&a…

  本文章仅仅简单记录32单片机的SPI+DMA驱动显示屏的性能测试,这里不花费时间介绍SPI和DMA。
硬件材料:SPI显示屏一个,32单片机
软件材料:
1.LCD的SPI驱动显示程序(SPI / SPI+DMA):
(1)SPI的配置程序:

SPI_HandleTypeDef SPI3_Handler;  //create a SPI handle
/*** @brief	SPI3 master mode* @param   void* @return  void*/
void SPI3_Init(void)
{SPI3_Handler.Instance=SPI3;            SPI3_Handler.Init.Mode=SPI_MODE_MASTER;         SPI3_Handler.Init.Direction=SPI_DIRECTION_2LINES;  SPI3_Handler.Init.DataSize=SPI_DATASIZE_8BIT;    SPI3_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH;    //Idle state clock is highSPI3_Handler.Init.CLKPhase=SPI_PHASE_2EDGE;        SPI3_Handler.Init.NSS=SPI_NSS_SOFT;                 SPI3_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2;//baudrate is highestSPI3_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;       SPI3_Handler.Init.TIMode=SPI_TIMODE_DISABLE;     SPI3_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;SPI3_Handler.Init.CRCPolynomial=7;                  //omitHAL_SPI_Init(&SPI3_Handler);__HAL_SPI_ENABLE(&SPI3_Handler);                  
}/*** @brief	SPI3 lower driver config:perip clock ,io* @param   hspi: the SPI handle pointer should be use* @return  void*/
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
{GPIO_InitTypeDef GPIO_Initure;__HAL_RCC_GPIOB_CLK_ENABLE();    __HAL_RCC_SPI3_CLK_ENABLE();        GPIO_Initure.Pin=GPIO_PIN_3|GPIO_PIN_5;GPIO_Initure.Mode=GPIO_MODE_AF_PP;         GPIO_Initure.Pull=GPIO_PULLUP;              GPIO_Initure.Speed=GPIO_SPEED_FREQ_VERY_HIGH;           GPIO_Initure.Alternate=GPIO_AF6_SPI3;          HAL_GPIO_Init(GPIOB,&GPIO_Initure);
}

(2)SPI的读写接口(非DMA情况下需要使用到)

/*** @brief	SPI3 R/W one octet* @param   TxData	the u8 data which should be writed* @return  the u8 data received*/
u8 SPI3_ReadWriteByte(u8 TxData)
{u8 Rxdata;HAL_SPI_TransmitReceive(&SPI3_Handler,&TxData,&Rxdata,1, 1000);       return Rxdata;          		 	
}/*** @brief	SPI3 Write one octet* @param   TxData	the tx payload* @param   size	payload length* @return  u8		0:success,others:fail*/
u8 SPI3_WriteByte(u8 *TxData,u16 size)
{return HAL_SPI_Transmit(&SPI3_Handler,TxData,size,1000);
}

(3)SPI的DMA配置初始化
我使用的是Stm32L4做SPI3+DMA的测试,首先看芯片手册DMA相关的内容:

  上面的表格罗列了DMA2每个通道的DMA请求,SPI3_Tx对应通道2,请求3(0011),那么我们可以这样配置SPI3的DMA通道:

void vidSPI3DMA_Config(void)
{__HAL_RCC_DMA2_CLK_ENABLE();//DMA2 Clock Enable__HAL_LINKDMA(&SPI3_Handler, hdmatx, SPI3TxDMA_Handler);  //Link DMA to SPI3, here we use the dma tx function//Tx Dma configSPI3TxDMA_Handler.Instance = DMA2_Channel2;                        //select the channelSPI3TxDMA_Handler.Init.Request = DMA_REQUEST_3;                    //request(CxS:0011)SPI3TxDMA_Handler.Init.Direction = DMA_MEMORY_TO_PERIPH;           //memory to peripheralSPI3TxDMA_Handler.Init.PeriphInc = DMA_PINC_DISABLE;               //peripheral not incrementSPI3TxDMA_Handler.Init.MemInc = DMA_MINC_ENABLE;                   //memory inc SPI3TxDMA_Handler.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;  //perip data length:8 bitSPI3TxDMA_Handler.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;     //mem data length:8 bitSPI3TxDMA_Handler.Init.Mode = DMA_NORMAL;                          SPI3TxDMA_Handler.Init.Priority = DMA_PRIORITY_HIGH;            SPI3TxDMA_Handler.State = HAL_DMA_STATE_READY;HAL_DMA_DeInit(&SPI3TxDMA_Handler);HAL_DMA_Init(&SPI3TxDMA_Handler);HAL_NVIC_SetPriority(DMA2_Channel2_IRQn, 0, 3);HAL_NVIC_EnableIRQ(DMA2_Channel2_IRQn);
}

(4)使用DMA中断需要调用DMA中断函数去清除相关中断标志位。

/** @brief: DMA2 Channel2 IRQ handler function*         mainly clear the interrupt flag
*/
void DMA2_Channel2_IRQHandler(void)
{HAL_DMA_IRQHandler(&SPI3TxDMA_Handler);
}/** @brief: After Tx is completed, the SPI DMA should be stopped for next transfer 
*/
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{HAL_SPI_DMAStop(hspi);    
}

2.LCD显示驱动程序:
(1)LCD基于SPI的数据发送接口:

/*** @brief	LCD SPI send data API* @return  void*/
#define NO_USING_DMA 1
static void LCD_SPI_Send(u8 *data, u32 size)
{
#if NO_USING_DMAu32 i;u32 delta = size/0xFFFF;for(i = 0; i<=delta; i++){if( i==delta )  /* Send the last data */SPI3_WriteByte(&data[i*0xFFFF], size%0xFFFF);//cause this API 2nd param is u16 typeelse    /* send 0xFFFF octets */SPI3_WriteByte(&data[i*0xFFFF], 0xFFFF);}
#elsewhile(SPI3_Handler.State != HAL_SPI_STATE_READY);HAL_SPI_Transmit_DMA(&SPI3_Handler, data, size);
#endifreturn;
}

  往LCD写任何数据都是用的这个接口LCD_SPI_Send。关于图片的绘制的函数这里不多余贴出来,相信网上一大把程序可以参考,这里直接使用定时器去了解不开DMA和开DMA显示同一张图片耗时差异,时间从串口打印出来:

    u32 t=0;printf("Show a 240X82 picture,Start: %d | ", t);vidEnableTIM3(1);//enable TIM3,and clear the counterDisplay_240x82_pic(0, 0);t = u32GetTim3Counter();printf("End: %d\r\n", t);

  这里我定时器计数频率分频到1Mhz,最大计数50000次,也是就计数频率1us,周期50ms。
在这里插入图片描述
   第一次我是以SPI+DMA驱动LCD显示240X82的图片,可以看出显示该图片在有DMA(加DMA中断)的加持下,耗时156us。第二次是我单独用SPI驱动LCD显示240X82的图片,耗时8685us,所以区别还是蛮大的。

http://www.dt0577.cn/news/47992.html

相关文章:

  • 政府网站制作公司跨境电商培训
  • 网站的结构布局搜索引擎的优化和推广
  • 做网站推广需要花多少钱个人开发app可以上架吗
  • 哪些网站可以做淘宝基础销量打字赚钱平台 学生一单一结
  • php动态网站开发概述公司官网模板
  • magento网站迁移销售怎么做
  • 网站静态页面访问很快php页面访问非常慢seo推广哪家公司好
  • 公网动态ip如何做网站公司企业网站建设
  • 网站地图怎么做的西安百度快照优化
  • 手机网站建设的第一个问题厦门最快seo
  • 登录广东省建设监理协会网站首页2021十大网络舆情案例
  • 南京模板建站百度云网盘资源搜索
  • 网站怎样设计网址富阳seo关键词优化
  • 网站设计公司合肥中国广告公司前十强
  • 怎么做自己微信的网站爱站网综合查询
  • 学习软件编程重庆网站seo建设哪家好
  • 宁夏建设厅网站首页站长工具ip地址
  • 沙田镇仿做网站其他搜索引擎
  • wordpress站点被删一个产品的网络营销方案
  • 抚顺网站制作优化电脑的软件有哪些
  • 河南建设监理协会官方网站磁力猫torrent kitty
  • 广州哪里有做网站推广网站广告收费标准
  • 大石桥做网站个人如何注册网址
  • 餐厅类网站模板西安seo网站关键词优化
  • 苏州百度推广排名优化北京优化seo排名
  • wordpress前台评论显示英文seo sem
  • 建设小型网站系统开题报告百度竞价什么意思
  • 海口什么网站建设郑州网站建设制作公司
  • 专业网站建设推荐优化公司怎么优化网站的
  • 怎么新建一个网站铁岭网站seo