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

[复制链接]
1072|10
 楼主| 比神乐 发表于 2023-1-24 21:01 | 显示全部楼层 |阅读模式
今天捣鼓串口0发送接收。一开始用P0.7发送,后来发现P0.7接在电压检测上,用不成。接收是P0.9。
所以改为P0.5。
原理图:
0.jpg


1.jpg 2.jpg 3.jpg

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

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

  17. ÐÞ¸ÄÈÕÆÚ      °æ±¾ºÅ          ÐÞ¸ÄÈË            ÐÞ¸ÄÄÚÈÝ
  18. -----------------------------------------------------------------------------
  19. 2022/4/14     V1.0          HuangMG             ´´½¨
  20. *******************************************************************************/
  21. int main(void)
  22. {
  23.         Hardware_init(); /* Ó²¼þ³õʼ»¯ */
  24.        
  25.         for (;;)
  26.         {
  27.                 delay_ms(100);
  28.                
  29.         }
  30. }

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

  16. void GPIO_init(void)
  17. {
  18.     GPIO_InitTypeDef GPIO_InitStruct;
  19.     GPIO_StructInit(&GPIO_InitStruct);

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

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

  31. void UART_init(void)
  32. {
  33.     UART_InitTypeDef UART_InitStruct;

  34.     UART_StructInit(&UART_InitStruct);
  35.     UART_InitStruct.BaudRate     = 9600;                /* ÉèÖò¨ÌØÂÊ9600 */
  36.     UART_InitStruct.WordLength   = UART_WORDLENGTH_8b;  /* ·¢ËÍÊý¾Ý³¤¶È8λ */
  37.     UART_InitStruct.StopBits     = UART_STOPBITS_1b;    /* ֹͣ볤¶È1λ */
  38.     UART_InitStruct.FirstSend    = UART_FIRSTSEND_LSB;  /* ÏÈ·¢ËÍLSB */
  39.     UART_InitStruct.ParityMode   = UART_Parity_NO;      /* ÎÞÆæÅ¼Ð£Ñé */
  40.           UART_InitStruct.RXD_INV      = DISABLE;             /* RXDµçƽÕý³£Êä³ö*/            
  41.           UART_InitStruct.TXD_INV      = DISABLE;             /* TXDµçƽÕý³£Êä³ö*/
  42.           /*ʹÄܽÓÊպͷ¢ËÍÍê³ÉÖжÏ*/
  43.           UART_InitStruct.IRQEna       = UART_IRQEna_SendOver | UART_IRQEna_RcvOver;
  44.     UART_Init(UART0, &UART_InitStruct);
  45. }
中断函数:
  1. u8 Uart0_Buff = 0;
  2. void UART_IRQHandler(void)
  3. {
  4.         if (UART_GetIRQFlag(UART0, UART_IF_SendOver))    // ·¢ËÍÍê³ÉÖжÏ
  5.         {
  6.                 UART_ClearIRQFlag(UART0, UART_IF_SendOver);  // Çå³ý·¢ËÍÍê³É±ê־λ
  7.         }
  8.         if (UART_GetIRQFlag(UART0, UART_IF_RcvOver))     // ½ÓÊÕÍê³ÉÖжÏ
  9.         {
  10.                 UART_ClearIRQFlag(UART0, UART_IF_RcvOver);         // Çå³ý½ÓÊÕÍê³É±ê־λ
  11.                 Uart0_Buff = UART_ReadData(UART0);                         // ½ÓÊÕ 1 ByteÊý¾Ý
  12.                 printf("Hellow word = %c \n\r", Uart0_Buff); // ·¢ËÍÊý¾Ý
  13.         }
  14. }
效果图:
5.jpg 6.jpg
便携手到老 发表于 2023-1-28 10:11 | 显示全部楼层
感觉代码好像不对吧
 楼主| 比神乐 发表于 2023-1-28 10:15 | 显示全部楼层
便携手到老 发表于 2023-1-28 10:11
感觉代码好像不对吧

哪儿不对啦?
classroom 发表于 2023-1-28 10:17 | 显示全部楼层
请楼主规范使用代码框
classroom 发表于 2023-1-28 10:18 | 显示全部楼层
这个代码框看着挺不规范的,看着有点习惯
 楼主| 比神乐 发表于 2023-1-28 10:22 | 显示全部楼层
classroom 发表于 2023-1-28 10:17
请楼主规范使用代码框

我不明白,你说清楚哪儿不规范了?
tpgf 发表于 2023-2-23 13:27 | 显示全部楼层
请问楼主P0.7可以用在检测内部电压上吗
wakayi 发表于 2023-2-23 14:11 | 显示全部楼层
classroom 发表于 2023-1-28 10:18
这个代码框看着挺不规范的,看着有点习惯

在我看来 楼主的代码还是非常的规范的
heimaojingzhang 发表于 2023-2-23 16:19 | 显示全部楼层
仔细看了看 感觉都不错 稍显不完美的就是中断函数有稍稍的大了
heimaojingzhang 发表于 2023-2-23 16:44 | 显示全部楼层
请问最高的能设置的波特率是多大啊
 楼主| 比神乐 发表于 2023-2-24 10:13 | 显示全部楼层
heimaojingzhang 发表于 2023-2-23 16:44
请问最高的能设置的波特率是多大啊

不清楚,估计115200应该没问题吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3537

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部