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

php网站开发主要做什么深圳网站建设有没有市场

php网站开发主要做什么,深圳网站建设有没有市场,传奇游戏排行榜,模板网站制作多少钱最近使用swm341s 调试了一个显示屏 中间遇到了一些个问题卡了一些时间,特此做一个总结和记录,防忘记 移植使用的是Freertos LVGL8.3.3 芯片内部带了一个8M的SDRAM,需要在lv_conf.h文件中定义一个SDRAM2作为SPI Flash的映射地址,…

最近使用swm341s 调试了一个显示屏
中间遇到了一些个问题卡了一些时间,特此做一个总结和记录,防忘记
移植使用的是Freertos + LVGL8.3.3

  1. 芯片内部带了一个8M的SDRAM,需要在lv_conf.h文件中定义一个SDRAM2作为SPI Flash的映射地址,作为固定存储的空间,把一些图片,字体放入编译的时候,映射到这个位置,并且下载会存入spi flash中
    数据将在启动时从加载地址( SPI Flash)复制到 SDRAM。
    例如,本次设置的SDRAM2的空间是4MB。
#define LV_ATTRIBUTE_LARGE_CONST __attribute__((section(".SDRAM2")))
#define LV_ATTRIBUTE_LARGE_RAM_ARRAY __attribute__((section(".SDRAM1")))

并且需要在sct文件中设置 spi flash 映射地址

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************LR_IROM1 0x00000000 0x00080000  {    ; load region size_regionER_IROM1 0x00000000 0x00080000  {  ; load address = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)}RW_IRAM1 0x20000000 0x00010000  {  ; RW data.ANY (+RW +ZI)}ER_SDRAM1 0x80000000 0x00400000  {             ; execution address*(.SDRAM1)}
}LR_SPIFLASH 0x70000000 0x01000000  {      ; load region size_regionER_SDRAM2 0x80400000 0x00400000  {             ; execution address*(.SDRAM2)}
}
  1. LVGL 的任务机制本身不是线程安全的,在对如何LVGL控件的操作时,必须在同一线程中调用,如果直接在其他线程中操作UI,可能会导致竞态条件或数据不一致的问题,甚至程序崩溃‌。
    我开始的时候没有注意到这个点,在其他任务中也去控制了一些控件,就导致了刷新不正常,也会导致进入hardfault,所以后面改成了,增加一个队列,在lvgl任务中接收队列来调整需要修改的数据

此时,我还犯错了,创建队列的时候,选择的size是u16格式,

MSG_LvglQueue       = xQueueCreate(LVGL_QUEUE_MAX, sizeof(uint16_t) );

但是我在用的时候,又传递的是int类型的数据,导致传输的数据异常了。 如果数据长度不匹配,传递的时候使用的是char类型的数据,则可能会导致内存泄漏而进入hardfault。

  1. 中断的选择
    本芯片的中断,没有group的概念,全是抢占优先级,没有子优先级,所以无需设置 NVIC_SetPriorityGrouping 函数,
    并且本芯片的优先级范围是0-7;
    在freertosConfig.h文件中
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY	5// 允许 FreeRTOS API 的最高优先级 = 5

所以硬件中断里面,如果需要安全的使用到rtos的API函数,则中断优先级必须小于等于5
在初始化的时候,就可以设置中断优先级,比如我现在设置串口1中断是6

NVIC_SetPriority(UART1_IRQn, 6);		

在中断中需要使用合适的api函数
比如队列发送,需要使用带ISR的

xQueueSendFromISR (MSG_UART_RXQueue, &s_uart1RxBufLen, 0);

使用临界区函数

	BaseType_t 	xWasEnabled;xWasEnabled = taskENTER_CRITICAL_FROM_ISR();        //进入基本临界区/*填写代码*/taskEXIT_CRITICAL_FROM_ISR(xWasEnabled);        //退出基本临界区	

我在这里犯错了,因为没有注意到中断优先级的问题,导致默认的时候串口1中断优先级是默认的0,在大部分情况下是正常的,但是总是偶发性的出现,在任务中,接收的队列一直被阻塞了,本任务也不在运行,但是其他任务运行正常。还有很小概率出现hardfault。就是中断中发送队列的时候,破坏了队列的表,导致被死锁了

  1. 串口引脚RX,好像是不带内部上拉的,如果初始化完后,该引脚又是悬空的,就会一直进入串口中断,在这上面,我也吃亏了,因为没有注意到会进入中断,所以在中断中,最开始调试的时候,随便写了一个接收的buf,多次进入串口中断后,就内存泄漏进入了hardfault
    需要硬件上拉,或者不初始化中断
    在初始化的时候,RXThresholdIEn 代表是否使能该中断,RXThreshold 是代表FIFO里面的数据个数产生中断,我在这个地方犯错的就是,我设置为1,总是需要接收1个字节后,填入了FIFO中,第二个字节才产生中断, 设置为0,就会没个字节的接收都会产生中断,这里手册中有明确的写,但是我没有注意到。
    在这里插入图片描述
void uart1_init(void)
{UART_InitStructure UART_initStruct;PORT_Init(PORTN, PIN5, PORTN_PIN5_UART1_RX, 1); //GPION.5配置为UART1输入引脚PORT_Init(PORTB, PIN0, PORTB_PIN0_UART1_TX, 0); //GPIOB.0配置为UART1输出引脚UART_initStruct.Baudrate = 19200;UART_initStruct.DataBits = UART_DATA_8BIT;UART_initStruct.Parity = UART_PARITY_NONE;UART_initStruct.StopBits = UART_STOP_1BIT;UART_initStruct.RXThreshold = 0;UART_initStruct.RXThresholdIEn = 1;UART_initStruct.TXThreshold = 0;UART_initStruct.TXThresholdIEn = 0;UART_initStruct.TimeoutTime = 3;UART_initStruct.TimeoutIEn = 1;UART_Init(UART1, &UART_initStruct);UART_Open(UART1);DMA_InitStructure DMA_initStruct;DMA_initStruct.Mode = DMA_MODE_SINGLE;DMA_initStruct.Unit = DMA_UNIT_BYTE;DMA_initStruct.Count = DMA_PRINTF_LEN_MAX;DMA_initStruct.SrcAddr = (uint32_t)DMA_Uart1Buffer;DMA_initStruct.SrcAddrInc = 1;DMA_initStruct.DstAddr = (uint32_t)&UART1->DATA;DMA_initStruct.DstAddrInc = 0;DMA_initStruct.Handshake = DMA_CH1_UART1TX;DMA_initStruct.Priority = DMA_PRI_HIGH;DMA_initStruct.INTEn = 0;DMA_CH_Init(DMA_CH1, &DMA_initStruct); 
}
  1. DMA,两组4个通道,例如某段DMA搬运用CH0,那CH0就被占用了,只能用CH1,CH2,Ch3
    在这里插入图片描述
http://www.yayakq.cn/news/57162/

相关文章:

  • 上海博大园林建设发展有限公司网站做外贸一般看什么网站
  • 域名注册的网站有哪些大兵seo博客
  • 济宁网站建设兼职比较好约的网站设计
  • 做推送的网站有哪些网站建设和网页设计视频教程
  • 做网站买岩棉网站建设过程小结
  • 佛山小学网站建设做贷款的网站
  • 徐州专门做网站百度seo如何快速排名
  • 社交网站图片展示软件开发管理工具
  • ICP备案不停网站做侵权网站用哪里的服务器稳
  • 阿里巴巴网站建设初衷会员卡系统一般哪里买
  • 自己做的图片哪个网站可以出售做微信小程序需要什么技术
  • 把网站放在虚拟主机上 怎么进入网站后台网站建设宝安
  • 常见的营销型网站手机网站的优势
  • 示范校建设专题网站昆山网站建设培训学校
  • 建设工程申报系统网站wordpress文章怎么加关键词描述
  • 有哪些中文域名网站做公司简介网站
  • 国外域名购买网站江西网站建设公司费用
  • 免费建设门户网站微信第三方开发平台
  • 合肥网页网站制作做网站 中企动力
  • 上海网站推广服务wordpress搭建博客视频教程
  • 哈尔滨模板网站建站百度在西安有分公司吗
  • 网站建设教学工作总结6重庆知名网站
  • 在godaddy做网站贵吗网站制作需要什么软件有哪些
  • 企业网站icp备案申请做钓鱼网站会被抓吗
  • 一个网站绑定多个域名公众号微网站建设
  • 自适应平台网站模板网页编程是什么
  • 网站变exe文件怎么做私人影吧服务器
  • 网络口碑营销案例分析seo职位全称
  • 韶关哪里做网站最好白鹭引擎做网站
  • 网站建设带数据库模板wordpress微信h5支付