Mọi thắc mắc cơ bản về STM8 tập trung ở đây

Thảo luận trong 'STM8'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. NTT_GA69

    NTT_GA69 Học sinh phổ thông

    Tham gia ngày:
    20/2/17
    Bài viết:
    18
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    th
    thankiu anh :)
     
  2. NTT_GA69

    NTT_GA69 Học sinh phổ thông

    Tham gia ngày:
    20/2/17
    Bài viết:
    18
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    a cho e hỏi tí là sao e k giao tiếp đc ms MRC522 nhỉ
    code e ở dưới ạ
    e thấy thiêu thiếu mà chưa biết thiếu cái j :)
     
  3. Emga

    Emga Học sinh phổ thông

    Tham gia ngày:
    22/9/14
    Bài viết:
    5
    Đã được thích:
    0
    Điểm thành tích:
    1
    Em có thắc mắc, muốn thiết kế mạch nhiều Touch Sensing của Stm8s105.
    Trên Kit STM8S105 Discovery có "Solder bridge" - SB3, SB4.
    Vậy không biết khi vẽ mạch in Altium thì các Solder bridge này có yêu cầu như thế nào để Touch Sensing hoạt động bình thường?
    [​IMG]
     
  4. thongtinvtd

    thongtinvtd Sinh viên đại học

    Tham gia ngày:
    7/12/14
    Bài viết:
    157
    Đã được thích:
    16
    Điểm thành tích:
    18
    Giới tính:
    Nam
    theo mình bạn cứ vẽ bình thường, các cầu nối đấy kiểu như để cách ly nếu ko dùng chức năng nút cảm ứng
     
  5. vancuong

    vancuong Học sinh phổ thông

    Tham gia ngày:
    7/8/14
    Bài viết:
    6
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    PWM STM8S | Cộng đồng cơ điện tử Việt Nam | Mechatronics
    Theo code PWM ở luồng này, mình có chạy thử chương trình và đo bằng Osilo nhưng không đo được sóng chỉ đo được điện áp nhỉ?
    upload_2017-6-13_15-14-34.

    ///////////////////Code chạy trên STM8S003F3P6, Osilo đo ở chân ra PD4/////////////////
    include "stm8s_conf.h"
    #define PORT_PWM1 GPIO_PORTD
    #define PIN_PWM1 GPIO_PIN_4
    #define PORT_PWM2 GPIO_PORTD
    #define PIN_PWM2 GPIO_PIN_3
    #define PORT_PWM3 GPIO_PORTA
    #define PIN_PWM3 GPIO_PIN_3
    uint16_t CCR1_Val = 500;
    uint16_t CCR2_Val = 250;
    uint16_t CCR3_Val = 125;
    //uint16_t CCR1_Val_1;
    void Delay(uint16_t nCount);
    static void TIM2_Config(void);
    static void TIM2_PWM1(uint16_t CCR1_Val_2);

    /*
    - TIM2_CH1 pin (PD.4)
    - TIM2_CH2 pin (PD.3)
    - TIM2_CH3 pin (PA.3)
    Các TIM2CLK là 2MHz, các Prescaler là 1 nên TIM2 clock truy c?p là 2MHz.

    Các TIM2 f= 2 KHz: TIM2 Frequency = TIM2 clock counter / (ARR + 1)
    TIM2 là 2KHz.


    Các TIM2 CCR1 gia tri dang ky 500, nên TIM2 Channel 2 Kênh 1 tao ra mot
    tin hieu PWM voi tan so 2KHz và mot chu ky nhiem 50%:
    Chu ky nhiem vu TIM2 Channel1 = [TIM2_CCR1 / (TIM2_ARR + 1)] * 100 = 50%

    Các TIM2 CCR2 gia tri dang ky 375, nên TIM2 Channel 2 Kênh 1 tao ra mot
    tin hieu PWM voi tan so 2KHz và mot chu ky nhiem 25%:
    Chu ky nhiem vu TIM2 Channel2 = [TIM2_CCR2 / (TIM2_ARR + 1)] * 100 = 25%

    Các TIM2 CCR3 gia tri dang ky 250, nên TIM2 Channel 2 Kênh 1 tao ra mot
    tin hieu PWM voi tan so 2KHz và mot chu ky nhiem 50%:
    Chu ky nhiem vu TIM2 Channel3 = [TIM2_CCR3 / (TIM2_ARR + 1)] * 100 = 12,5%


    */

    void main(void)
    {
    /* TIM2 configuration -----------------------------------------*/
    /*TIM2_Config(); */

    while (1)
    {
    TIM2_PWM1(10);
    Delay(0xFFFF);
    TIM2_PWM1(100);
    Delay(0xFFFF);
    TIM2_PWM1(200);
    Delay(0xFFFF);
    TIM2_PWM1(300);
    Delay(0xFFFF);
    TIM2_PWM1(500);
    Delay(0xFFFF);
    TIM2_PWM1(600);
    Delay(0xFFFF);
    TIM2_PWM1(700);
    Delay(0xFFFF);
    TIM2_PWM1(800);
    Delay(0xFFFF);
    TIM2_PWM1(900);
    Delay(0xFFFF);
    //===========================================
    TIM2_PWM1(900);
    Delay(0xFFFF);
    TIM2_PWM1(800);
    Delay(0xFFFF);
    TIM2_PWM1(700);
    Delay(0xFFFF);
    TIM2_PWM1(600);
    Delay(0xFFFF);
    TIM2_PWM1(500);
    Delay(0xFFFF);
    TIM2_PWM1(400);
    Delay(0xFFFF);
    TIM2_PWM1(300);
    Delay(0xFFFF);
    TIM2_PWM1(200);
    Delay(0xFFFF);
    TIM2_PWM1(100);
    Delay(0xFFFF);
    TIM2_PWM1(10);
    Delay(0xFFFF);
    }
    }
    static void TIM2_PWM1(uint16_t CCR1_Val_2)
    {
    /* Time base configuration */
    TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999);
    /* PWM1 Mode configuration: Channel1 */
    TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val_2, TIM2_OCPOLARITY_HIGH);
    TIM2_OC1PreloadConfig(ENABLE);
    TIM2_ARRPreloadConfig(ENABLE);

    /* TIM2 enable counter */
    TIM2_Cmd(ENABLE);
    }
    static void TIM2_Config(void)
    {
    /* Time base configuration */
    TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999);

    /* PWM1 Mode configuration: Channel1 */
    TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH);
    TIM2_OC1PreloadConfig(ENABLE);

    /* PWM1 Mode configuration: Channel2 */
    TIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val, TIM2_OCPOLARITY_HIGH);
    TIM2_OC2PreloadConfig(ENABLE);

    /* PWM1 Mode configuration: Channel3 */
    TIM2_OC3Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,CCR3_Val, TIM2_OCPOLARITY_HIGH);
    TIM2_OC3PreloadConfig(ENABLE);

    TIM2_ARRPreloadConfig(ENABLE);

    /* TIM2 enable counter */
    TIM2_Cmd(ENABLE);
    }
    void Delay(uint16_t nCount)
    {
    /* Decrement nCount value */
    while (nCount != 0)
    {
    nCount--;
    }
    }
     
  6. trieubao

    trieubao Học sinh phổ thông

    Tham gia ngày:
    21/12/15
    Bài viết:
    23
    Đã được thích:
    0
    Điểm thành tích:
    1
    e dùng SDCC code thanh ghi nhưng điều khiển led7seg khác port e thấy khó quá ... vấn đề là mình không thể gán từng PIN với chế độ 0 hoặc 1 đuợc phải (1<<x) để xuất mức 1 ra chân x @@, e dùng thư viện thì nó toàn báo lỗi ?ASlink-Warning-Undefined Global '{hàm edùng trong main.c}' referenced by module, mọi người giúp e với
     
  7. Phuoc8387

    Phuoc8387 Học sinh phổ thông

    Tham gia ngày:
    22/3/17
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Cho mình hỏi Con STM8S này .Mình cho chạysuất 1 ngày 12h thì nó sao nhỉ.Nó chạy có ổn định không
     
  8. tdm

    tdm Kỹ sư

    Tham gia ngày:
    1/9/12
    Bài viết:
    459
    Đã được thích:
    428
    Điểm thành tích:
    63
    Giới tính:
    Nam
    Bạn cho nó chạy quanh năm suốt tháng cũng được. Còn ổn định hay không thì còn do nhiều yểu tố.
     
    sgesvn thích bài này.
  9. qloi

    qloi Học sinh phổ thông

    Tham gia ngày:
    19/8/14
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Các bác cho mình hỏi mình viết code cho truyền UART như sau mà không tài nào send được kí tự lên PC bằng hàm PRINTF hay putchar. trong khi đó dùng hàm fprintf để chuyển vào mảng rồi dùng hàm printf tự tạo thì gởi lên được. Xin được giúp đở!
    Mã:
    #include "iostm8s103f3.h"
    #include "intrinsics.h"
    #include "stdio.h"
    //#include "string.h"
    #define led PB_ODR_ODR5
    
    #define bt PA_IDR_IDR2   
    
    
    unsigned char cnt=10;
    char str[];
    
    //////////////////////////////////DELAY_FUNCTIONS//////////////////////////////
    void delay_us(int time){
      while(time--){
        __no_operation(); //NOP
        __no_operation(); //NOP
        __no_operation(); //NOP
        __no_operation(); //NOP
        __no_operation(); //NOP
        __no_operation(); //NOP
        __no_operation(); //NOP
        __no_operation(); //NOP
      }
    }
    
    void delay_ms(int time){
      while(time--){
        delay_us(1000);
      }
    }
    
    
    ///////////////////////////////////UART/////////////////////////////////////
    void UART_Init(){
      //UART1_BRR1 = 0x34; //
      //UART1_BRR2 = 0x01; // Baudrate ~19200
      UART1_BRR1 = 0x68; //
      UART1_BRR2 = 0x03; // Baudrate 9600
      UART1_CR2 = 0x2C;  // Tx Enable, Rx Enable, Rx Interrupt Enable
      UART1_CR3 = 0x00;  // 1 Stop bits
    }
    
    void UART_Write(unsigned char byte){
      while(!(UART1_SR & 0x80));   // wait TXE
      UART1_DR = byte;
    }
    
    void UART_Printf(char *message)
    {
      while (*message)
      {
        UART1_DR = (unsigned char) *message;     //  Put the next character into the data transmission register.
        while (UART1_SR_TXE == 0);          //  Wait for transmission to complete.
        message++;                               //  Grab the next character.
      }
      //UART_Write(val);
    }
    ////////////////////////////////////GPIO CONFIG///////////////////////////////
    void GPIO_CONFG()
    {
      PB_DDR_DDR5 = 1;     // PD3 ch? d? Output
      PB_CR1_C15 = 1;      // CR1 ? tr?ng thái cao tr?, cách vi?t khác PD_CR1 = 0x08
      PB_CR2_C25 = 1;      // CR2 ? tr?ng thái Output t?n s? 10Mhz
     
      PA_DDR_DDR2 = 0;     
      PA_CR1_C12 = 1;     
      PA_CR2_C22 = 0;       // disable interrupt on pin A2
     
      /*
      PD_DDR_DDR3 = 0;     
      PD_CR1_C13 = 1;     
      PD_CR2_C23 = 0;*/
    }
    
    /////////////////////////////////////Main////////////////////////////////////
    void main( void )
    {
      CLK_CKDIVR = 0x00;   
     
      GPIO_CONFG();
      UART_Init();
      //interrupt
      __enable_interrupt();
     
     
      while(1)
      {
        if(!bt)
        {
          delay_ms(10);
          while(!bt);
          led = ~led;
          //UART_Printf("a: ");
          //sprintf(str,"gia tri: %u \n\r",cnt++);
          //UART_Printf(str);
          printf("%d \r\n", 12);
          putchar(20);
        }
      }
    }
    
    #pragma vector = 0x14
    __interrupt void ISR_UART(){
    
    }
    
     

Chia sẻ trang này