STM8L0151+USART не работает

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

STM8L0151+USART не работает

Сообщение Alex-Elektron »

Доброго времени суток! Пытаюсь запустить USART на STM8L151, код пишу в IAR.
1) Ремап сделал на А2,А3.
2) Выход настроил.
3) USART1 включил.
3) Делитель установил.
4) Передачу разрешил.

Но на выходе ничего нет.

Зисис мой код:

Код: Выделить всё

#include "iostm8l151f3.h"

void clock_init(){
  CLK_CKDIVR = 1;
  CLK_ICKCR |= (1<<0);
  while(!(CLK_ICKCR&(1<<1)));
}

void mcu_usart_init(unsigned int divider){
  SYSCFG_RMPCR1 |= (1<<4); //Remap to PA2, PA3
  
  PA_DDR_bit.DDR2 = 1; // Output
  PA_CR1_bit.C12  = 1; // Push-pull
  
  CLK_PCKENR1_bit.PCKEN10 = 1; //USART1 On
   
  (void) USART1_SR;
  (void) USART1_DR;

  USART1_BRR2 = (unsigned char) (((divider >> 8) & 0xF0) | (divider & 0x0F));
  USART1_BRR1 = (unsigned char) (divider >> 4);
  
  USART1_CR2_bit.REN=1; 
  USART1_CR2_bit.TEN=1;
	
}

int main( void ){
  clock_init();
  mcu_usart_init(208); //Divider for 8MHz to 34800
  
  PC_DDR_bit.DDR4 = 1; // Output
  PC_CR1_bit.C14  = 1; // Push-pull
  PC_CR2_bit.C24  = 0; // 2MHz output speed
  
  
  
  while(1){
    
    while(!(USART1_SR_bit.TXE)); 
    USART1_DR = 0xAA;
   
    PC_ODR ^= (1<<4);
    for(unsigned long i=0; i<200000; i++);
  
  }
}

Где я неправ или что ещё нужно сделать?
Реклама
logind
Родился
Сообщения: 7
Зарегистрирован: Сб дек 29, 2018 00:27:10

Re: STM8L0151+USART не работает

Сообщение logind »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3345779#p3345779"]Доброго времени суток! Пытаюсь запустить USART на STM8L151, код пишу в IAR.

Зисис мой код:

Код: Выделить всё

  CLK_PCKENR1_bit.PCKEN10 = 1; //USART1 On
Где я неправ или что ещё нужно сделать?[/uquote]

По моему тут должно быть: CLK_PCKENR1_bit.PCKEN15 = 1
Реклама
Ответить

Вернуться в «ARM»