Thông báo

Collapse
No announcement yet.

Thắc mắc về UART của mcu stm8s

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Thắc mắc về UART của mcu stm8s

    Cho e hỏi trong điễn đàn có bác nào nghịch stm8s chưa a
    em đang mắc phần truyền nhận uart giữa stm8s với pc , bác nào biết chỉ giúp em với a !
    code phần gửi đây . còn phần nhận thì em chưa viết được mong bác nào biết giúo em với a
    Em dùng IAR để biên dịch
    https://www.mediafire.com/?571q3u8n89b45fh

  • #2
    copy paste nguyên cái sample trong lib của nó vào là chạy mà, có phải chỉnh gì đâu
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

    Comment


    • #3
      Nguyên văn bởi mast090 Xem bài viết
      copy paste nguyên cái sample trong lib của nó vào là chạy mà, có phải chỉnh gì đâu
      Bạn gửi cho mình được không ạ !

      Comment


      • #4
        thế bạn code cho stm8 bằng cái j, khi bạn down cái lib của stm8 về thì trong đó nó cũng có cả sample rồi
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          Nguyên văn bởi vanhuonga6 Xem bài viết
          Cho e hỏi trong điễn đàn có bác nào nghịch stm8s chưa a
          em đang mắc phần truyền nhận uart giữa stm8s với pc , bác nào biết chỉ giúp em với a !
          code phần gửi đây . còn phần nhận thì em chưa viết được mong bác nào biết giúo em với a
          Em dùng IAR để biên dịch
          https://www.mediafire.com/?571q3u8n89b45fh
          Vào trang ST download cái thư viện cho STM8 về code cho đỡ vất vả, thư viện của nó IAR , COSMIC , RAISONANCE ...đều chạy được cả .

          Code tay bo trên IAR thì phải hiểu cấu trúc của STM8 và các thanh ghi ( khá vất vả với những người không có nhiều nền tảng về MCU )
          Thư viện : STSW-STM8069 STM8S/A Standard peripheral library - STMicroelectronics

          Code thử bài UART1 cho con STM8S003, dùng IAR ... khá đơn giản ! ( gõ kí tự phát ( send) và kí tự đó được phản hồi ( echo ) lại Receiver )
          Code:
          
          /* Includes ------------------------------------------------------------------*/
          #include "stm8s.h"
          #include "stdio.h"
          #include "stm8s_uart1.h"
          
          int putchar (int c);  // functions Putchar --> UART
          int getchar (void);   // functions Getchar --> UART
          char echo;
          void main(void)
          {
            
            /*High speed internal clock prescaler: 1*/
              CLK_DeInit();
              CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);      //f_Master = HSI/1 = 16MHz
              CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);            //f_CPU = f_Master/1 = 16MHz
              while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET);     //wait until HSI ready
              
            
              UART1_DeInit();
            /* UART1 configuration ------------------------------------------------------*/
            /* UART1 configured as follow:
                  - BaudRate = 9600 baud  
                  - Word Length = 8 Bits
                  - One Stop Bit
                  - No parity
                  - Receive and transmit enabled
                  - UART1 Clock disabled
            */
            UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
                        UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
          
            
            
            while (1)
            {
              echo = getchar();
              printf("%c", echo);  
             
            }
          }
          
          /////////////////////// Functions /////////////////////////////////
          int putchar (int c)
          {
            /* Write a character to the UART1 */
            UART1_SendData8(c);
            /* Loop until the end of transmission */
            while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET);
          
            return (c);
          }
          ///////////////////
          
          int getchar (void)
          {
            int c = 0;
            /* Loop until the Read data register flag is SET */
            while (UART1_GetFlagStatus(UART1_FLAG_RXNE) == RESET);
              c = UART1_ReceiveData8();
            return (c);
          }
          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

          Comment


          • #6
            Mình viết và chạy được rồi ! cảm ơn mọi người

            Comment


            • #7
              cảm ơn bạn, chia sẻ cho mình và mọi người!
              |

              Comment


              • #8
                Nguyên văn bởi queduong Xem bài viết
                Vào trang ST download cái thư viện cho STM8 về code cho đỡ vất vả, thư viện của nó IAR , COSMIC , RAISONANCE ...đều chạy được cả .

                Code tay bo trên IAR thì phải hiểu cấu trúc của STM8 và các thanh ghi ( khá vất vả với những người không có nhiều nền tảng về MCU )
                Thư viện : STSW-STM8069 STM8S/A Standard peripheral library - STMicroelectronics

                Code thử bài UART1 cho con STM8S003, dùng IAR ... khá đơn giản ! ( gõ kí tự phát ( send) và kí tự đó được phản hồi ( echo ) lại Receiver )
                Code:
                
                /* Includes ------------------------------------------------------------------*/
                #include "stm8s.h"
                #include "stdio.h"
                #include "stm8s_uart1.h"
                
                int putchar (int c);  // functions Putchar --> UART
                int getchar (void);   // functions Getchar --> UART
                char echo;
                void main(void)
                {
                  
                  /*High speed internal clock prescaler: 1*/
                    CLK_DeInit();
                    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);      //f_Master = HSI/1 = 16MHz
                    CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);            //f_CPU = f_Master/1 = 16MHz
                    while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET);     //wait until HSI ready
                    
                  
                    UART1_DeInit();
                  /* UART1 configuration ------------------------------------------------------*/
                  /* UART1 configured as follow:
                        - BaudRate = 9600 baud  
                        - Word Length = 8 Bits
                        - One Stop Bit
                        - No parity
                        - Receive and transmit enabled
                        - UART1 Clock disabled
                  */
                  UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
                              UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
                
                  
                  
                  while (1)
                  {
                    echo = getchar();
                    printf("%c", echo);  
                   
                  }
                }
                
                /////////////////////// Functions /////////////////////////////////
                int putchar (int c)
                {
                  /* Write a character to the UART1 */
                  UART1_SendData8(c);
                  /* Loop until the end of transmission */
                  while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET);
                
                  return (c);
                }
                ///////////////////
                
                int getchar (void)
                {
                  int c = 0;
                  /* Loop until the Read data register flag is SET */
                  while (UART1_GetFlagStatus(UART1_FLAG_RXNE) == RESET);
                    c = UART1_ReceiveData8();
                  return (c);
                }
                bạn cho mình hỏi mình viết code trên với con rtm8003 load chương trình bị báo lỗi UART1 không được định nghĩa
                như thế là sao mọi người

                Comment


                • #9
                  Bạn copy hay chụp hình cái thông báo lỗi lên đi, chứ code chạy đó, bạn dùng STVP hay IAR?!

                  Have fun!

                  Comment


                  • #10
                    Nguyên văn bởi designer Xem bài viết
                    Bạn copy hay chụp hình cái thông báo lỗi lên đi, chứ code chạy đó, bạn dùng STVP hay IAR?!

                    Have fun!
                    code trên mình chua add tưu viện nên nó báo lỗi
                    bạn cho mình hỏi cách khởi tạo thạch anh nội cho con STM8S003 như thế nào

                    Comment


                    • #11
                      Bạn này chạy đi hỏi ở mấy diễn đàn luôn!
                      Có người giúp bạn bên cđt rồi đó!

                      Have fun!

                      Comment


                      • #12
                        Mình mới tập tành viết STM8S băng IAR V1.30. Các bạn cho mình hỏi tại sao phần giao tiếp UART không sử dụng được hàm prinf khi kết nối với phần cứng. Còn khi Debug trên IAR thì vẫn có.
                        Code mình viết như sau:

                        #include "stm8s_conf.h"
                        #include <stdio.h>
                        #include "stm8s_uart2.h"

                        // Khai bao cac thu vien su dung trong UART -> STM8S105RC6T chi co 1 UART2

                        unsigned char SendChar(unsigned char c);
                        unsigned char ReceiChar(void);
                        unsigned char echo;

                        int main( void )
                        {
                        // Khai bao Port D
                        GPIO_DeInit(GPIOD);
                        GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_FA ST);
                        // Cau hinh Clock
                        CLK_DeInit();
                        CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //f_Master = HSI/1=16Mhz
                        CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //f_CPU = fMaster/1 = 16Mhz
                        while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET); //wait until HSI ready
                        // Cau hinh UART2
                        UART2_DeInit();
                        UART2_Init((u32)9600,UART2_WORDLENGTH_8D,UART2_STO PBITS_1,UART2_PARITY_NO,
                        UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
                        UART2_Cmd(ENABLE);
                        // Thuc hien viec goi thong tin thiet bi
                        /* Output a message on Hyperterminal using printf function */
                        printf("Enter Text");
                        // Test Rx_UART
                        SendChar(0x31);
                        while(1)
                        {
                        GPIO_WriteLow(GPIOD, GPIO_PIN_0);
                        // Chuong trinh con nhan du lieu tu UART - > Chuyen nguoc lai len PC
                        ReceiChar();
                        }
                        // return 0;
                        }
                        /* ======== Cac ham su dung trong chuong trinh ================ */
                        /* Chuong trinh con chuyen 1 ky tu ra UART */
                        unsigned char SendChar(unsigned char c){
                        /* Ghi 1 ky tu vao UART2 */
                        UART2_SendData8(c);
                        /* Doi cho den khi qua trinh truyen du lieu hoan tat */
                        while(UART2_GetFlagStatus(UART2_FLAG_TXE)==RESET);
                        return(c);
                        }
                        /* Chuong trinh con nhan 1 ky tu tu UART */
                        unsigned char ReceiChar(void){
                        char c=0;
                        while(UART2_GetFlagStatus(UART2_FLAG_RXNE)==RESET) ;
                        c=UART2_ReceiveData8();
                        UART2_SendData8(c);
                        return(c);
                        }


                        Rất mong nhận được sự chỉ bảo của các bậc đàn anh.
                        thanks !

                        Comment


                        • #13
                          Nguyên văn bởi queduong Xem bài viết
                          Vào trang ST download cái thư viện cho STM8 về code cho đỡ vất vả, thư viện của nó IAR , COSMIC , RAISONANCE ...đều chạy được cả .

                          Code tay bo trên IAR thì phải hiểu cấu trúc của STM8 và các thanh ghi ( khá vất vả với những người không có nhiều nền tảng về MCU )
                          Thư viện : STSW-STM8069 STM8S/A Standard peripheral library - STMicroelectronics

                          Code thử bài UART1 cho con STM8S003, dùng IAR ... khá đơn giản ! ( gõ kí tự phát ( send) và kí tự đó được phản hồi ( echo ) lại Receiver )
                          Code:
                          
                          /* Includes ------------------------------------------------------------------*/
                          #include "stm8s.h"
                          #include "stdio.h"
                          #include "stm8s_uart1.h"
                          
                          int putchar (int c);  // functions Putchar --> UART
                          int getchar (void);   // functions Getchar --> UART
                          char echo;
                          void main(void)
                          {
                            
                            /*High speed internal clock prescaler: 1*/
                              CLK_DeInit();
                              CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);      //f_Master = HSI/1 = 16MHz
                              CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);            //f_CPU = f_Master/1 = 16MHz
                              while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET);     //wait until HSI ready
                              
                            
                              UART1_DeInit();
                            /* UART1 configuration ------------------------------------------------------*/
                            /* UART1 configured as follow:
                                  - BaudRate = 9600 baud  
                                  - Word Length = 8 Bits
                                  - One Stop Bit
                                  - No parity
                                  - Receive and transmit enabled
                                  - UART1 Clock disabled
                            */
                            UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
                                        UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
                          
                            
                            
                            while (1)
                            {
                              echo = getchar();
                              printf("%c", echo);  
                             
                            }
                          }
                          
                          /////////////////////// Functions /////////////////////////////////
                          int putchar (int c)
                          {
                            /* Write a character to the UART1 */
                            UART1_SendData8(c);
                            /* Loop until the end of transmission */
                            while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET);
                          
                            return (c);
                          }
                          ///////////////////
                          
                          int getchar (void)
                          {
                            int c = 0;
                            /* Loop until the Read data register flag is SET */
                            while (UART1_GetFlagStatus(UART1_FLAG_RXNE) == RESET);
                              c = UART1_ReceiveData8();
                            return (c);
                          }
                          Chào bác QD
                          - Bác cho mình hỏi sao code của bác em thêm 1 đoạn code nhỏ nữa để bật tắt led thì biên dich nó báo lỗi vậy bác?
                          Có phải tràn bộ nhớ do lệnh nào đó ko?
                          - Với lại bác có thể chỉ em đọc 1 chuỗi từ PC gửi xuống, sau đó gửi nguyên chuỗi đó lên lại PC bằng ngắt được ko , em lay hoay hoài ko ra nhức đầu nhức óc quá bác ah
                          Thank bác!
                          Điện thoại: 0989.285.187 hoặc 0122.407.4621 hoặc 0124.552.4920
                          Địa chỉ: Đường Đỗ Xuân Hợp - Quận 9- TP.Hồ Chí Minh.

                          Comment


                          • #14
                            Nguyên văn bởi elecpro Xem bài viết
                            Chào bác QD
                            - Bác cho mình hỏi sao code của bác em thêm 1 đoạn code nhỏ nữa để bật tắt led thì biên dich nó báo lỗi vậy bác?
                            Có phải tràn bộ nhớ do lệnh nào đó ko?
                            - Với lại bác có thể chỉ em đọc 1 chuỗi từ PC gửi xuống, sau đó gửi nguyên chuỗi đó lên lại PC bằng ngắt được ko , em lay hoay hoài ko ra nhức đầu nhức óc quá bác ah
                            Thank bác!
                            Bạn post thông báo lỗi lên thì mọi người mới biết lỗi gì mà giúp bạn chứ!?
                            Nếu là lỗi tràn bộ nhớ thì có thể tham khảo bên luồng này. Mình có hướng dẫn cách khắc phục.

                            Comment


                            • #15
                              Nguyên văn bởi vaa_dtvn Xem bài viết
                              Bạn post thông báo lỗi lên thì mọi người mới biết lỗi gì mà giúp bạn chứ!?
                              Nếu là lỗi tràn bộ nhớ thì có thể tham khảo bên luồng này. Mình có hướng dẫn cách khắc phục.
                              Bác cho em hỏi, làm sao để lưu được 1 mãng dữ liệu UART vào bộ nhớ của vi điều khiển sử dụng ngắt UART nhỉ?
                              P/s em đã sử dụng được ngắt UART rồi ah!
                              Điện thoại: 0989.285.187 hoặc 0122.407.4621 hoặc 0124.552.4920
                              Địa chỉ: Đường Đỗ Xuân Hợp - Quận 9- TP.Hồ Chí Minh.

                              Comment

                              Về tác giả

                              Collapse

                              vanhuonga6 Tìm hiểu thêm về vanhuonga6

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X