Вт апр 03, 2018 20:15:14
#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++);
}
}
Сб дек 29, 2018 00:31:03
CLK_PCKENR1_bit.PCKEN10 = 1; //USART1 On