【N32L43x评测】移植墨水屏出现了问题
<p>有一种程序卡在BKPT上的情况,然后我搜索了下是仿真可以运行但是不调试就死机。</p><p style="">这是别人的回答。</p>
<p style="">这种卡在BKPT上的情况,如果是硬件仿真,多点几次运行,是可以跑起来的,很奇怪。我点三次运行程序就可以跑起来了,但是离线是跑不起来的。</p>
<p style="">出现这样的情况主要是堆栈分配,我看之前的STM32的墨水瓶代码堆栈分配了超级大。</p>
<p style=""> </p>
<p style="">搞这么大主要是其用了malloc分配一些数组空间。</p>
<p style=""> </p>
<p style="">这不是重点,我们可以不采用这种方法。主要是我移植了之后,屏幕完全没反应,这个就比较奇怪了。</p>
<p style=""> </p>
<p style="">主要我在设置io口为输入模式时这里一种不过,电平一直为高的。不像我在STM32运行时,会变低。</p>
<pre>
<code>void sEPD_IO_DeInit(void)
{
GPIO_InitType GPIO_InitStructure;
SPI_InitType SPI_InitStructure;
GPIO_InitStruct(&GPIO_InitStructure);
/*!< sFLASH_SPI_CS_GPIO, sFLASH_SPI_MOSI_GPIO, sFLASH_SPI_MISO_GPIO
and sFLASH_SPI_SCK_GPIO Periph clock enable */
RCC_EnableAPB2PeriphClk(
RCC_APB2_PERIPH_GPIOA|RCC_APB2_PERIPH_GPIOB, ENABLE);
/*!< sFLASH_SPI Periph clock enable */
RCC_EnableAPB2PeriphClk(sEPD_SPI_CLK|RCC_APB2_PERIPH_AFIO, ENABLE);
/*!< Configure sFLASH_CS_PIN pin: sFLASH Card CS pin */
GPIO_InitStructure.Pin = sEPD_CS_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitPeripheral(sEPD_CS_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.Pin = RST_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.Pin = DC_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.Pin = GPIO_PIN_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.Pin = BUSY_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Input;
GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
/*!< Configure sFLASH_SPI pins: SCK */
GPIO_InitStructure.Pin = sEPD_SPI_SCK_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Alternate = GPIO_AF0_SPI1;
GPIO_InitPeripheral(sEPD_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure sFLASH_SPI pins: MOSI */
GPIO_InitStructure.Pin = sEPD_SPI_MOSI_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Alternate = GPIO_AF0_SPI1;
GPIO_InitPeripheral(sEPD_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure sFLASH_SPI pins: MISO */
GPIO_InitStructure.Pin = sEPD_SPI_MISO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Input;
GPIO_InitPeripheral(sEPD_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
SPI_InitStructure.DataDirection = SPI_DIR_DOUBLELINE_FULLDUPLEX;
SPI_InitStructure.SpiMode = SPI_MODE_MASTER;
SPI_InitStructure.DataLen = SPI_DATA_SIZE_8BITS;
SPI_InitStructure.CLKPOL = SPI_CLKPOL_LOW;
SPI_InitStructure.CLKPHA = SPI_CLKPHA_FIRST_EDGE;
SPI_InitStructure.NSS = SPI_NSS_SOFT;
SPI_InitStructure.BaudRatePres = SPI_BR_PRESCALER_32;
SPI_InitStructure.FirstBit = SPI_FB_MSB;
SPI_InitStructure.CRCPoly = 7;
SPI_Init(sEPD_SPI, &SPI_InitStructure);
/*!< Enable the sFLASH_SPI */
SPI_Enable(sEPD_SPI, ENABLE);
}
</code></pre>
<p style="">这是我的配置函数,SPI这边没问题,只要那个读取忙过去,这边发送我用逻辑分析仪看了全部是正确的。所以不知道是不是上面的IO配置出了问题。目前墨水屏暂时没有搞定。</p>
<div id="qb-sougou-search" style="display: none; opacity: 0;">
<p>搜索</p>
<p class="last-btn">复制</p>
<iframe src=""></iframe></div>
先试一下不用读取忙先,刷新太快可能出问题。 <p>出现问题最好还是先用模拟试一下通信是否正常,再改成硬件当时读一下是否正常,读个最简单的ID,然后再看驱动程序</p> <p>每次移植都有可能遇到各种问题,得一步一步排除定位,从硬件到软件一点一点来</p> <p>墨水屏刷新一次时间挺久的,趋近1秒了。你5秒让墨水屏显示一次,然后不检测忙试试。</p>
<p>BKPT是啥?</p>
BUSY_PIN是不是要设置上下拉啊
页:
[1]