打印
[LKS32 软件]

[ LKS32MC037E开发板评测 ]+串口0发送接收

[复制链接]
309|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天捣鼓串口0发送接收。一开始用P0.7发送,后来发现P0.7接在电压检测上,用不成。接收是P0.9。
所以改为P0.5。
原理图:





看了一下手册,有个奇怪的地方:
第5脚既可以做P0.8也可以做P0.9.
代码:
主程序:
#include "lks32mc03x_lib.h"
#include "hardware_init.h"
#include "delay.h"

/*******************************************************************************
º¯ÊýÃû³Æ£º    int main(void)
¹¦ÄÜÃèÊö£º    Ö÷³ÌÐòÈë¿Ú
ÊäÈë²ÎÊý£º    ÎÞ         
Êä³ö²ÎÊý£º    ÎÞ
·µ »Ø Öµ£º    ÎÞ
ÆäËü˵Ã÷£º    ±¾ÊµÑéʹÓÃLKS32MC033H6P8µÄP0.9¸´ÓÃΪUART_RX,P0.7¸´ÓÃΪUART_TX½øÐд®¿Ú
               Í¨Ñ¶ÊµÑ飬UART²¨ÌØÂÊΪ9600£¬Êý¾Ý³¤¶È8룬1λֹͣ룬ÎÞÆæżУÑ飬ÏÈ·¢ËÍ
                                                         LSB¡£ÊµÑ鿪ÆôUART·¢ËÍÍê³ÉºÍ½ÓÊÕÍê³ÉÖжϣ¬ÔÚ·¢ËÍÍê³ÉÖжÏÖ»Çå³ý·¢ËÍÍê³É±ê
                                                         Ö¾Î»£¬ÔÚ½ÓÊÕÍê³ÉÖжÏÄÚ½øÐÐÊý¾Ý½ÓÊÕ£¬²¢°Ñ½ÓÊÕµÄÊý¾Ý·¢ËͳöÈ¥¡£
                                                         
ÔËÐÐЧ¹û£º    ½«³ÌÐòÉÕ¼µ½demo°åºó£¬Ê¹Óô®¿ÚÁ¬½Óµ½µçÄÔ´®¿ÚÖúÊÖ»òÕßÁíÒ»¸ödemoÉÏ£¬µçÄÔ´®¿Ú
              ÖúÊÖ»òÕßÁíÒ»¸ödemo·¢ËÍÒ»¸öbyteÊý¾Ý£¬Ôò¸ÃоƬ»á·µ»Ø·¢Ë͵ÄÊý¾Ý¡£

ÐÞ¸ÄÈÕÆÚ      °æ±¾ºÅ          ÐÞ¸ÄÈË            ÐÞ¸ÄÄÚÈÝ
-----------------------------------------------------------------------------
2022/4/14     V1.0          HuangMG             ´´½¨
*******************************************************************************/
int main(void)
{
        Hardware_init(); /* Ó²¼þ³õʼ»¯ */
       
        for (;;)
        {
                delay_ms(100);
               
        }
}

初始化代码:
void Hardware_init(void)
{
    __disable_irq();                  /* ¹Ø±ÕÖÐ¶Ï ÖжÏ×Ü¿ª¹Ø */
    SYS_WR_PROTECT = 0x7a83;          /* ¿ªÆôдʹÄÜ*/
    IWDG_DISABLE();                   /* ¹Ø±Õ¶ÀÁ¢¿´ÃŹ·Ê¹ÄÜ*/
    FLASH_CFG |= 0x00080000;          /* FLASH Ԥȡ¼ÓËÙʹÄÜ*/
    delay_init(48);                   /* ÑÓʱº¯Êý³õʼ»¯Ê±ÖÓ48MHz*/
       
    GPIO_init();                      /* GPIO³õʼ»¯ */
    UART_init();                      /* UART_init³õʼ»¯ */
    delay_us(100);                    /* ÑÓʱµÈ´ýÓ²¼þ³õʼ»¯Îȶ¨ */
    NVIC_EnableIRQ(UART_IRQn);        /* ʹÄÜUART_IRQnÍⲿÖжÏ*/
    NVIC_SetPriority(UART_IRQn, 0);   /* UART_IRQnÍⲿÖжÏÓÅÏȼ¶ÉèÖÃΪ0*/
    __enable_irq();                   /* ¿ªÆô×ÜÖÐ¶Ï */
}

void GPIO_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_StructInit(&GPIO_InitStruct);

    /* P0.9-RX0, P0.7-TX0  UART0 */
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStruct.GPIO_Pin =  GPIO_Pin_5;
    GPIO_Init(GPIO0, &GPIO_InitStruct);

          GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_Pin =  GPIO_Pin_9;
    GPIO_Init(GPIO0, &GPIO_InitStruct);
               
    GPIO_PinAFConfig(GPIO0, GPIO_PinSource_9, AF4_UART); //P0.9¸´ÓÃΪUART_RX
    GPIO_PinAFConfig(GPIO0, GPIO_PinSource_5, AF4_UART); //P0.7¸´ÓÃΪUART_TX
}

void UART_init(void)
{
    UART_InitTypeDef UART_InitStruct;

    UART_StructInit(&UART_InitStruct);
    UART_InitStruct.BaudRate     = 9600;                /* ÉèÖò¨ÌØÂÊ9600 */
    UART_InitStruct.WordLength   = UART_WORDLENGTH_8b;  /* ·¢ËÍÊý¾Ý³¤¶È8λ */
    UART_InitStruct.StopBits     = UART_STOPBITS_1b;    /* ֹͣ볤¶È1λ */
    UART_InitStruct.FirstSend    = UART_FIRSTSEND_LSB;  /* ÏÈ·¢ËÍLSB */
    UART_InitStruct.ParityMode   = UART_Parity_NO;      /* ÎÞÆæżУÑé */
          UART_InitStruct.RXD_INV      = DISABLE;             /* RXDµçƽÕý³£Êä³ö*/            
          UART_InitStruct.TXD_INV      = DISABLE;             /* TXDµçƽÕý³£Êä³ö*/
          /*ʹÄܽÓÊպͷ¢ËÍÍê³ÉÖжÏ*/
          UART_InitStruct.IRQEna       = UART_IRQEna_SendOver | UART_IRQEna_RcvOver;
    UART_Init(UART0, &UART_InitStruct);
}
中断函数:
u8 Uart0_Buff = 0;
void UART_IRQHandler(void)
{
        if (UART_GetIRQFlag(UART0, UART_IF_SendOver))    // ·¢ËÍÍê³ÉÖжÏ
        {
                UART_ClearIRQFlag(UART0, UART_IF_SendOver);  // Çå³ý·¢ËÍÍê³É±ê־λ
        }
        if (UART_GetIRQFlag(UART0, UART_IF_RcvOver))     // ½ÓÊÕÍê³ÉÖжÏ
        {
                UART_ClearIRQFlag(UART0, UART_IF_RcvOver);         // Çå³ý½ÓÊÕÍê³É±ê־λ
                Uart0_Buff = UART_ReadData(UART0);                         // ½ÓÊÕ 1 ByteÊý¾Ý
                printf("Hellow word = %c \n\r", Uart0_Buff); // ·¢ËÍÊý¾Ý
        }
}
效果图:

使用特权

评论回复
沙发
便携手到老| | 2023-1-28 10:11 | 只看该作者
感觉代码好像不对吧

使用特权

评论回复
板凳
比神乐|  楼主 | 2023-1-28 10:15 | 只看该作者
便携手到老 发表于 2023-1-28 10:11
感觉代码好像不对吧

哪儿不对啦?

使用特权

评论回复
地板
classroom| | 2023-1-28 10:17 | 只看该作者
请楼主规范使用代码框

使用特权

评论回复
5
classroom| | 2023-1-28 10:18 | 只看该作者
这个代码框看着挺不规范的,看着有点习惯

使用特权

评论回复
6
比神乐|  楼主 | 2023-1-28 10:22 | 只看该作者
classroom 发表于 2023-1-28 10:17
请楼主规范使用代码框

我不明白,你说清楚哪儿不规范了?

使用特权

评论回复
7
tpgf| | 2023-2-23 13:27 | 只看该作者
请问楼主P0.7可以用在检测内部电压上吗

使用特权

评论回复
8
wakayi| | 2023-2-23 14:11 | 只看该作者
classroom 发表于 2023-1-28 10:18
这个代码框看着挺不规范的,看着有点习惯

在我看来 楼主的代码还是非常的规范的

使用特权

评论回复
9
heimaojingzhang| | 2023-2-23 16:19 | 只看该作者
仔细看了看 感觉都不错 稍显不完美的就是中断函数有稍稍的大了

使用特权

评论回复
10
heimaojingzhang| | 2023-2-23 16:44 | 只看该作者
请问最高的能设置的波特率是多大啊

使用特权

评论回复
11
比神乐|  楼主 | 2023-2-24 10:13 | 只看该作者
heimaojingzhang 发表于 2023-2-23 16:44
请问最高的能设置的波特率是多大啊

不清楚,估计115200应该没问题吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

337

主题

3057

帖子

7

粉丝