510
个编辑
更改
无编辑摘要
•SPI TI模式支持
暂缺,有需要开发驱动的朋友,可以参照我们的源码和TFT使用手册。
''<span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span><span class="tlid-translation-gender-indicator translation-gender-indicator"></span>''
# 使用miniUSB线,连接PC与开发板USB接口。
# 将SW1拨到USB端,SW2拨到MCU。
# 使用Keil打开基础实验的实验11使用Keil打开基础实验的实验13-串口中断。TFT显示屏。
# 使用Xshell打开miniUSB虚拟出的COM口
# 下载程序,并完成功能测试。
=== 实验验证 ===
=== 源码详解 ===
==== stm32l4xx_hal_conf.h ====
#define HAL_MODULE_ENABLED // 芯片
#define HAL_FLASH_MODULE_ENABLED // Flash
#define HAL_DMA_MODULE_ENABLED // DMA
#define HAL_UART_MODULE_ENABLED // UART
#define HAL_SPI_MODULE_ENABLED // SPI
</syntaxhighlight>
main函数,我们的例程由此处开始执行,首先调用HAL_Init()函数初始化我们的模块,接着调用SystemClock_Config()函数初始化此例程用到的时钟,具体有哪些时钟被初始化,在gyu_util.c部分有详细说明。
在while()循环中,我们判断STM32L4是否接收到串口助手发送的串口数据,如果接收到数据,则回显打印到串口助手。循环中我们检测是否有按键按下,如果有,则调试对应的功能。
<syntaxhighlight lang="c++" line="1" start="3841">
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
// 重置所有外设、flash界面以及系统时钟
// 配置系统时钟(包含振荡器、系统时钟、总线时钟等等)
SystemClock_Config();
// 初始化USART1 MX_USART1_UART_Init(); // 初始化按键引脚 MX_KEY_Init(); // 注册按钮回调函数 KEY_RegisterCb(AppKey_cb); // LCD SPI初始化 printfLCD_GPIO_Init("Uart ISR demo"); // 展示printf函数LCD IO控制引脚(例如背光) MX_SPI1_Init(); // LCD SPI控制引脚 // 图形界面初始化 GUI_Init(); // GUI界面初始化 GUI_Clear(); // 清屏 // 打印logo到位置X->0,Y->0 GUI_DrawBitmap(&bmLogo,0,0);
//
while (1) { KEY_Poll(); // 按键轮训,监测是否有按键被按下 }}</syntaxhighlight>按键回调函数,如果按下UP(S1)按键,则打印一个按键的小图片;如果按下DOWN(S3)按键,则打印"谷雨物联"这四个汉字;如果按下LEFT(S4)按键,则打印"Temp:35°C"这个英文和数字组成的字符串;如果按下RIGHT(S2)按键,则分别打印0x5566这个数字的16进制和10进制的值。<syntaxhighlight lang="c++" line="1" start="86">void AppKey_cb(uint8_t key){ // 如果有相应按键被按下,则串口打印调试信息 if(key & KEY_UP) { GUI_DrawBitmap(&bmKey,168,120); // 打印按键图标到位置X->168,Y->120 } if(key & KEY_DOWN) { GUI_SetColor(GUI_HotPink); // 粉色字体 GUI_SetBkColor(GUI_LightGreen); // 浅绿背景 GUI_GotoXY(24,108); // 光标指到X->24,Y->108 GUI_DispString("谷雨物联"); // 打印汉字“谷雨物联” } if(key & KEY_LEFT) { GUI_SetColor(GUI_Crimson); // 红色字体 GUI_SetBkColor(GUI_Gold); // 金色背景 GUI_DispStringAt("Temp:35℃",24,132); // 打印字符串“Temp:35℃”到位置X->24,Y->132 } if(key & KEY_RIGHT)
{
uint16_t value = 0x5566; // 轮训是否存在串口数据 if(HAL_UART_Poll定义value值0x5566()十进制:21862) { msgLen = HAL_UART_RxBufLenGUI_SetColor(GUI_Yellow); // 读取当前接收缓存区中有效的数据长度 // 超过100字节长度的部分不读取黄色字体 if GUI_SetBkColor(msgLen > APP_BUF_LENGUI_RoyalBlue) { msgLen = APP_BUF_LEN; // 蓝色背景 } msgLen = HAL_UART_Read GUI_DispHexAt(app_bufvalue,msgLen24,156,1); // 读取缓冲区数据打印16进制值 0x5566到位置X->24,Y->156 HAL_UART_Write GUI_DispDecAt(app_bufvalue,msgLen24,180); // 通过串口TX打印显示 }打印10进制值 21862到位置X->24,Y->180
}
}