Thông báo

Collapse
No announcement yet.

Nhận dữ liệu kiểu chuỗi từ PC qua UART với STM32

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

  • Nhận dữ liệu kiểu chuỗi từ PC qua UART với STM32

    Chào các bác.
    Em có một câu hỏi đó là làm sao để nhận được 1 chuỗi từ PC qua UART bằng cách sử dụng ngắt ạ?
    MCU của em là STM32F103VET6, sử dụng thư viện chuẩn CMSIS, em dùng Hercules để truyền/nhận tín hiệu.

    Em đã thử nhận chuỗi kiểu cùi bắp này thì đã thành công, tiện đây xin các bác góp ý code đó luôn ạ

    Code:
    char re_UART(void)
    {
    	char c;
    	while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == 0);
    	c=USART_ReceiveData(USART1);
    	USART_ClearFlag(USART1, USART_FLAG_RXNE);
    	return c;
    }
    
    void rechr_UART(char *s)
    {
    	while(((*s)=re_UART())!=35) s++;                     // 35 tuơng ứng kí tự # trong bảng mã ASCII :D
    	*s=0;
    }
    Good luck & Have fun ^^

  • #2
    Em cũng hỏi luôn là nếu đang thực hiện ngắt UART nhưng chưa xử lý xong lại nhận được 1 byte khác để kích hoạt ngắt thì giá trị trong thanh lưu dữ liệu có bị thay đổi ko ạ?
    Trình tự xử lý ngắt của nó sẽ ra sao ạ?
    Good luck & Have fun ^^

    Comment


    • #3
      bạn cho phép enable interrupt và viết function void USART1_InterruptHandler(void) để xử lý ngắt nếu sử dụng thư viện CMSIS nhé, code ở trên bạn chưa có đưa vào ngắt mà. Còn việc sợ mất data thì bạn tìm hiểu ring buffer hoặc làm một buffer đơn giản là mỗi lần ngắt sẽ đưa 1byte data vào đó và tăng bộ đếm của cái buffer đó lên rồi ra ngoài xử lý sau:

      PHP Code:
      void USART1_InterruptHandler(void)
      {
           
      uint8_t c;
           
      c=USART_ReceiveData(USART1);
           if(
      BufferPtr MAX_BUFFER_SIZE)
          {
              
      Buffer[BufferPtr++] = c;
          }
          else
          {
              
      BufferPtr 0;
          }
      }

      void DataProcessing(void)
      {
         
      // do something

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      • Andrea14
        Vấn đề về tốc độ quay
        bởi Andrea14
        Chào mọi người,

        Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
        12-12-2025, 12:42
      • bqviet
        Trả lời cho Đấu tắt điện cho máy tính bảng
        bởi bqviet
        Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
        06-12-2025, 17:17
      • nguyendinhvan
        Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
        bởi nguyendinhvan
        Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
        05-12-2025, 19:59
      Đang tải...
      X