本帖最后由 海洋无限 于 2020-5-24 10:57 编辑
1、板卡上其他外设在论坛中效果不好展示,手上刚好有块HMI的串口屏,不带触摸功能,想着结合串口一起调试下开发板的UART
2、例程中用的是串口1,这里使用的是串口2,按照例程串口1配置,也不难
3、先来看看串口配置部分
GPIO_InitTypeDef GPIO_InitStructure;
UART_InitTypeDef UART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_StructInit(&GPIO_InitStructure);
UART_StructInit(&UART_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE);
RCC_AHBPeriphClockCmd(USART2_GPIO_CLK, ENABLE);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
//UART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = USART2_Tx_PIN; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = USART2_Rx_PIN;//PA.3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure);
//CFG_UART_Clock(UART2, ENABLE);
UART_InitStructure.UART_BaudRate = USART2_BaudRate;
UART_InitStructure.UART_WordLength = UART_WordLength_8b;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx;
UART_Init(UART2, &UART_InitStructure);
UART_ITConfig(UART2, UART_IT_RXIEN, ENABLE);
UART_Cmd(UART2, ENABLE);
发送部分
void UART2_Tx_DATA(uint8_t data)
{
while((UART2->CSR&UART_IT_TXIEN)==0);
UART2->TDR = (data & (uint16_t)0x00FF);
}
4、这里说下接收部分,接收部分开始配置的是中断方式,但是试了几次,只要接收就会出现死机,看例程都是DMA方式,刚好我暂时用不到接收,所以就没有处理串口接收这块,中断方式接收后续需要在研究
5、到这里串口配置部分就结束了,接下来就是HMI串口屏的开发,这部分参考HMI相关手册即可,贴几张图看看
界面1哈哈,随便贴的图,界面2是准备后期完善的部分,准备和Key配合起来做这几个部分的测试,由于屏和开发板接口不同,家里又没啥接线的工具,这里着实耽搁了点事,好了不说废话了
由于我的不是触摸屏,所以计划Key3作为切换功能界面的按钮,Key4作为具体某个动能的开启和关闭,按一下开启,再按一下关闭,具体功能部分计划如下:
1、LED 流水灯,开发板上灯和屏上的状态同步
2、Music 准备和前一篇的Buzzer结合起来
3、Photo 准备做个类似电子相册的东西
4、USB 准备学习下USB部分的内容
6、关于HMI屏部分,这里就不多说了,只说下目前测试的串口切 页面部分
char EndString[4]={0xFF,0xFF,0xFF,'\0'};
char DisLimitString[30];
char *PAGE[6] = {"page 0", "page 1", "page 2", "page 3", "page 4", "page 5"};
[code]void DisPage(unsigned char page)
{
strcpy(DisLimitString,PAGE |