【ST MEMS防水气压传感器LPS27HHW测评】+基于STM32F411RE的串行通讯
[复制链接]
常言道:“工欲善其事,必先利其器。”
对于LPS27HHW气压传感器来讲,要想使其发挥作用,处理完成驱动外,还要解决必备的相关支持,例如要输出传感器的检测结果,就必须有显示器件做支持,
或是使用串行通讯。
对串行通讯来讲,是每个开发板都基本具备,因此就先解决串行通讯问题。
那以哪种开发板为基础呢?
因为从LPS27HHW的例程来看它是基于STM32F411RE开发板的,为便于尽早地实现LPS27HHW的驱动,故以STM32F411RE开发板为测试的基础。
当然,在使用前要先为开发板构建必要的开发环境,由于是选取KEIL为开发工具,因此还为其特地下载和安装了STM32F4xx_DFP.2.14.0的升级包。
这样就有了对STM32F411RE的芯片支持,见图1所示。
图1 实现芯片支持
此外,还为其设置了相应的烧写算法,见图2所示。
图2 选取烧写算法
实现程序通讯的主程序为:
int main(void)
{
SystemClock_Config();
LED_Init();
LED_Off();
UserButton_Init();
Configure_USART();
while (1)
{
WaitForUserButtonPress();
BufferTransfer();
}
}
相关的串行通讯函数为:
void WaitForUserButtonPress(void)
{
while (ubButtonPress == 0)
{
}
ubSend = 0;
}
void BufferTransfer(void)
{
/* Send characters one per one, until last char to be sent */
while (ubSend < sizeof(aStringToSend))
{
#if (USE_TIMEOUT == 1)
Timeout = USART_SEND_TIMEOUT_TXE_MS;
#endif /* USE_TIMEOUT */
/* Wait for TXE flag to be raised */
while (!LL_USART_IsActiveFlag_TXE(USARTx_INSTANCE))
{
#if (USE_TIMEOUT == 1)
/* Check Systick counter flag to decrement the time-out value */
if (LL_SYSTICK_IsActiveCounterFlag())
{
if(Timeout-- == 0)
{
/* Time-out occurred. Set LED to blinking mode */
LED_Blinking(LED_BLINK_SLOW);
}
}
#endif /* USE_TIMEOUT */
}
/* If last char to be sent, clear TC flag */
if (ubSend == (sizeof(aStringToSend) - 1))
{
LL_USART_ClearFlag_TC(USARTx_INSTANCE);
}
/* Write character in Transmit Data register.
TXE flag is cleared by writing data in DR register */
LL_USART_TransmitData8(USARTx_INSTANCE, aStringToSend[ubSend++]);
}
#if (USE_TIMEOUT == 1)
Timeout = USART_SEND_TIMEOUT_TC_MS;
#endif /* USE_TIMEOUT */
/* Wait for TC flag to be raised for last char */
while (!LL_USART_IsActiveFlag_TC(USARTx_INSTANCE))
{
#if (USE_TIMEOUT == 1)
/* Check Systick counter flag to decrement the time-out value */
if (LL_SYSTICK_IsActiveCounterFlag())
{
if(Timeout-- == 0)
{
/* Time-out occurred. Set LED to blinking mode */
LED_Blinking(LED_BLINK_SLOW);
}
}
#endif /* USE_TIMEOUT */
}
ubButtonPress =0;
/* Turn LED2 On at end of transfer : Tx sequence completed successfully */
LED_On();
}
经程序的编译 下载,其结果如图3所示。
图3 完成下载
其运行效果如图4所示,有了它就不愁LPS27HHW的结果显示问题了。
图4 运行效果
|