support avr architecture based on ATMega32

1. IAR project, see TencentOS-tiny\board\ATMega32\IAR, both 4.12 and 7.20 is supplied.
This commit is contained in:
daishengdong
2020-03-03 18:27:24 +08:00
parent e3da94194e
commit 7e6ce005e6
56 changed files with 13225 additions and 244 deletions

View File

@@ -1,7 +1,7 @@
#ifndef __TIM_H_
#define __TIM_H_
void Timer2_Init(uint32_t clock, uint32_t tick_per_second);
void timer1(void);
#endif

View File

@@ -5,11 +5,13 @@
const uint8_t HEX_TABLE[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int putchar(int c) {
int putchar(int c)
{
if('\n' == (char)c) {
USART_SendData8(USART1, '\r');
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
USART_SendData8(USART1, c);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return (c);
@@ -17,95 +19,90 @@ int putchar(int c) {
void UART1_Send_Byte(uint8_t ucData)
{
USART_SendData8(USART1, ucData);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == 0)
;
USART_SendData8(USART1, ucData);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == 0)
;
}
//send string
/* send string */
void UART1_Send_String(char *Str)
{
while (*Str != '\0') // "\0" meaning is the end of a string
{
UART1_Send_Byte(*Str);
Str++;
}
while (*Str != '\0') { // "\0" meaning is the end of a string
UART1_Send_Byte(*Str);
Str++;
}
}
void UART1_Send_Dec(unsigned int num, unsigned char ucNumCount)
{
char disp_buffer1[2];
char disp_buffer2[3];
char disp_buffer3[4];
char disp_buffer4[5];
char disp_buffer5[6];
char disp_buffer6[7];
char disp_buffer1[2];
char disp_buffer2[3];
char disp_buffer3[4];
char disp_buffer4[5];
char disp_buffer5[6];
char disp_buffer6[7];
switch (ucNumCount)
{
case 1:
switch (ucNumCount)
{
case 1:
disp_buffer1[0] = HEX_TABLE[num % 10];
disp_buffer1[1] = 0;
disp_buffer1[0] = HEX_TABLE[num % 10];
disp_buffer1[1] = 0;
UART1_Send_String(disp_buffer1);
break;
UART1_Send_String(disp_buffer1);
break;
case 2:
disp_buffer2[0] = HEX_TABLE[(num % 100) / 10];
disp_buffer2[1] = HEX_TABLE[num % 10];
disp_buffer2[2] = 0;
UART1_Send_String(disp_buffer2);
break;
case 2:
disp_buffer2[0] = HEX_TABLE[(num % 100) / 10];
disp_buffer2[1] = HEX_TABLE[num % 10];
disp_buffer2[2] = 0;
UART1_Send_String(disp_buffer2);
break;
case 3:
disp_buffer3[0] = HEX_TABLE[num / 100];
disp_buffer3[1] = HEX_TABLE[(num % 100) / 10];
disp_buffer3[2] = HEX_TABLE[num % 10];
disp_buffer3[3] = 0;
case 3:
disp_buffer3[0] = HEX_TABLE[num / 100];
disp_buffer3[1] = HEX_TABLE[(num % 100) / 10];
disp_buffer3[2] = HEX_TABLE[num % 10];
disp_buffer3[3] = 0;
UART1_Send_String(disp_buffer3);
break;
UART1_Send_String(disp_buffer3);
break;
case 4:
disp_buffer4[0] = HEX_TABLE[(num % 10000) / 1000];
disp_buffer4[1] = HEX_TABLE[(num % 1000) / 100];
disp_buffer4[2] = HEX_TABLE[(num % 100) / 10];
disp_buffer4[3] = HEX_TABLE[num % 10];
disp_buffer4[4] = 0;
case 4:
disp_buffer4[0] = HEX_TABLE[(num % 10000) / 1000];
disp_buffer4[1] = HEX_TABLE[(num % 1000) / 100];
disp_buffer4[2] = HEX_TABLE[(num % 100) / 10];
disp_buffer4[3] = HEX_TABLE[num % 10];
disp_buffer4[4] = 0;
UART1_Send_String(disp_buffer4);
break;
UART1_Send_String(disp_buffer4);
break;
case 5:
case 5:
disp_buffer5[0] = HEX_TABLE[(num % 100000) / 10000];
disp_buffer5[1] = HEX_TABLE[(num % 10000) / 1000];
disp_buffer5[2] = HEX_TABLE[(num % 1000) / 100];
disp_buffer5[3] = HEX_TABLE[(num % 100) / 10];
disp_buffer5[4] = HEX_TABLE[num % 10];
disp_buffer5[5] = 0;
disp_buffer5[0] = HEX_TABLE[(num % 100000) / 10000];
disp_buffer5[1] = HEX_TABLE[(num % 10000) / 1000];
disp_buffer5[2] = HEX_TABLE[(num % 1000) / 100];
disp_buffer5[3] = HEX_TABLE[(num % 100) / 10];
disp_buffer5[4] = HEX_TABLE[num % 10];
disp_buffer5[5] = 0;
UART1_Send_String(disp_buffer5);
break;
UART1_Send_String(disp_buffer5);
break;
case 6:
disp_buffer6[0] = HEX_TABLE[num / 100000];
disp_buffer6[1] = HEX_TABLE[(num % 100000) / 10000];
disp_buffer6[2] = HEX_TABLE[(num % 10000) / 1000];
disp_buffer6[3] = HEX_TABLE[(num % 1000) / 100];
disp_buffer6[4] = HEX_TABLE[(num % 100) / 10];
disp_buffer6[5] = HEX_TABLE[num % 10];
disp_buffer6[6] = 0;
case 6:
UART1_Send_String(disp_buffer6);
break;
disp_buffer6[0] = HEX_TABLE[num / 100000];
disp_buffer6[1] = HEX_TABLE[(num % 100000) / 10000];
disp_buffer6[2] = HEX_TABLE[(num % 10000) / 1000];
disp_buffer6[3] = HEX_TABLE[(num % 1000) / 100];
disp_buffer6[4] = HEX_TABLE[(num % 100) / 10];
disp_buffer6[5] = HEX_TABLE[num % 10];
disp_buffer6[6] = 0;
UART1_Send_String(disp_buffer6);
break;
default:
break;
}
default:
break;
}
}
void UART1_Init(uint32_t uiBaudRate)
@@ -128,3 +125,4 @@ void UART1_Init(uint32_t uiBaudRate)
// enable UART1
USART_Cmd(USART1, ENABLE);
}

View File

@@ -259,7 +259,7 @@
<name>CCIncludePath2</name>
<state>$PROJ_DIR$\..\..\..\..\kernel\core\include</state>
<state>$PROJ_DIR$\..\..\..\..\arch\stm8\common\include</state>
<state>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm</state>
<state>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8</state>
<state>$PROJ_DIR$\..\..\BSP\include</state>
<state>$PROJ_DIR$\..\..\LIB\inc</state>
<state>$PROJ_DIR$\..\..\TOS-CONFIG</state>
@@ -1646,16 +1646,16 @@
<group>
<name>arch</name>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c</name>

View File

@@ -2160,16 +2160,16 @@
<group>
<name>arch</name>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c</name>

View File

@@ -259,7 +259,7 @@
<name>CCIncludePath2</name>
<state>$PROJ_DIR$\..\..\..\..\kernel\core\include</state>
<state>$PROJ_DIR$\..\..\..\..\arch\stm8\common\include</state>
<state>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm</state>
<state>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8</state>
<state>$PROJ_DIR$\..\..\BSP\include</state>
<state>$PROJ_DIR$\..\..\LIB\inc</state>
<state>$PROJ_DIR$\..\..\TOS-CONFIG</state>
@@ -1648,16 +1648,16 @@
<group>
<name>arch</name>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c</name>

View File

@@ -2160,16 +2160,16 @@
<group>
<name>arch</name>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_c.c</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_c.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_config.h</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_config.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccarm\port_s.S</name>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\iccstm8\port_s.S</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\arch\stm8\common\tos_cpu.c</name>