STM8S

DM00024550_STM8S003F3_Datasheet

PM0044_STM8 CPU programming manualpd

RM0016_STM8S_STM8A_Reference manual

리눅스에서 sdccstm8flash로 개발 가능

High-Quality-Mini-Board-STM8S003F3P6-Development-Board-Program-Module-With-Download-Serial-Port-Pin

알리에서 싸다고 몇개 구매했는데…. 지금 생각해보니 저렴하지 않은듯.. (2.5$)
회로도를 구하지 못했다.. J2를 쇼트시키면 PA3에 LED가 연결되어 있다

짜깁기 하여 IRQ로 UART 처리하는 코드

#include <string.h>
#include "stm8s.h" // stm9l.h랑 다른거다, 다른부분 다 비슷한데 CLK 부분이 DS랑 좀 다르다...

int uart_write(const char *str) {
	char i;
	for(i = 0; i < strlen(str); i++) {
		USART1_DR = str[i];
		while(!(USART1_SR & USART_SR_TXE));
	}
	return(i); // Bytes sent
}

unsigned char GetByte(void)
{
	while (!(USART1_SR & USART_SR_RXNE));
	return USART1_DR;
}

void PutByte(unsigned char Data)
{
    USART1_DR = Data;
    while (!(USART1_SR & USART_SR_TXE));
}

void USART_RX_ISR(void) __interrupt 18
{
	uart_write("GOT ST ");
	PutByte(GetByte());
	uart_write("\r\n");
}

int main() 
{
	int d;

	PA_DDR = 0x08; // PA3
	PA_CR1 = 0x08;
	
	CLK_DIVR = 0x00; // Set the frequency to 16 MHz
	CLK_PCKENR1 = 0x08; // Enable UART1

	USART1_CR2 = USART_CR2_TEN | USART_CR2_REN |USART_CR2_RIEN; // Allow TX & RX
	USART1_CR3 &= ~(USART_CR3_STOP1 | USART_CR3_STOP2); // 1 stop bit
	USART1_BRR2 = 0x03; USART1_BRR1 = 0x68; // 9600 baud
	
	__asm__("rim"); // Enable Interrupt
	
	while(1)
	{
		//PA_ODR ^= 0x08;
		for(d = 0; d < 29000; d++);
		//uart_write("Hello World!\r\n");
		//PutByte(GetByte());
	}
}

 

TIM1_CH3에 PWM 출력샘플 (아 이거하느라고 되게 애먹었는데..  OISR에서 or 연산이 제대로 안되서 그랬던거같다….)

int main() 
{

	TIM1_ARRH = 0x0F;
	TIM1_ARRL = 0xFF;
	
	TIM1_PSCRH = 0x00;
	TIM1_PSCRL = 0x00;
	
	TIM1_CR1 = 0x00; 
	TIM1_RCR = 0;
	
	TIM1_CCER2 = 0x0f;
	TIM1_CCMR3 = 0x70;
	TIM1_OISR = 0x7F;
	TIM1_CCR3H = 0x03;
	TIM1_CCR3L = 0xFF;
	TIM1_CR1 =0x01;
	TIM1_BKR = 0x80;

	while(1);
	return 0;
}

 

사용한 Makefile

SDCC=sdcc
SDLD=sdld
OBJECTS=myStm8.ihx
OBJECT=myStm8
.PHONY: all clean flash

all: $(OBJECTS)

clean:
	rm -f $(OBJECTS)

flash: $(OBJECT).ihx
	stm8flash -cstlinkv2 -pstm8s003f3 -w $(OBJECT).ihx

%.ihx: %.c
	$(SDCC) -lstm8 -mstm8 --out-fmt-ihx $(CFLAGS) $(LDFLAGS) $<

이왕 환경구성한거 몇개 더샀다
저렴하다(0.78$) 크리스탈이 없다(내부클럭 쓰나?…)
HTB11CtFMFXXXXadXFXXq6xXFXXXf
http://www.aliexpress.com/item/1pcs-lot-STM8S103F3P6-system-board-STM8S-STM8-development-board-minimum-core-board/32524292414.html

Leave a Reply

Your email address will not be published. Required fields are marked *