精简Sys,编译通过,测试通过
This commit is contained in:
parent
884a147676
commit
d273ac7589
|
@ -142,7 +142,7 @@ bool assert_ptr_(const void* p)
|
|||
}
|
||||
|
||||
uint ramEnd = SRAM_BASE + (Sys.RAMSize << 10);
|
||||
if((uint)p >= ramEnd)
|
||||
if(Sys.RAMSize > 0 && (uint)p >= ramEnd)
|
||||
{
|
||||
debug_printf("ptr:0x%08x >= SRAM_END:0x%08x\r\n", p, ramEnd);
|
||||
return false;
|
||||
|
@ -154,7 +154,7 @@ bool assert_ptr_(const void* p)
|
|||
#endif
|
||||
|
||||
uint flashEnd = FLASH_BASE + (Sys.FlashSize << 10);
|
||||
if((uint)p >= flashEnd && (uint)p < SRAM_BASE)
|
||||
if(Sys.FlashSize > 0 && (uint)p >= flashEnd && (uint)p < SRAM_BASE)
|
||||
{
|
||||
debug_printf("ptr:0x%08x >= FLASH_END:0x%08x\r\n", p, flashEnd);
|
||||
return false;
|
||||
|
@ -185,7 +185,7 @@ void ShowFault(uint exception)
|
|||
debug_printf("是总线fault,存储器管理fault 或是用法fault 上访的结果\r\n");
|
||||
// GD不能映射中断向量表,必须使用Flash开头的那个默认中断向量表,而这需要在Keil的ARM属性页设置GD32=1
|
||||
// __Vectors_Size只是一个标记,需要先取地址,才得到它的值
|
||||
if(Sys.IsGD && (uint)&__Vectors_Size <= 7 * 4)
|
||||
//if(Sys.IsGD && (uint)&__Vectors_Size <= 7 * 4)
|
||||
{
|
||||
debug_printf("GD不能映射中断向量表,必须使用Flash开头的那个默认中断向量表,而这需要在Keil的ARM属性页设置GD32=1\r\n");
|
||||
}
|
||||
|
|
|
@ -82,7 +82,14 @@ extern "C"
|
|||
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
|
||||
//RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);
|
||||
// 支持多种倍频
|
||||
mull = clock / cystalClock;
|
||||
//mull = clock / cystalClock;
|
||||
// 干掉除法
|
||||
mull = 0;
|
||||
while(clock > cystalClock)
|
||||
{
|
||||
clock -= cystalClock;
|
||||
mull++;
|
||||
}
|
||||
pll = ((mull - 2) * 4) << 16;
|
||||
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | pll);
|
||||
//SystemCoreClock = cystalClock * mull;
|
||||
|
|
|
@ -428,7 +428,7 @@ extern "C"
|
|||
/* 重载fputc可以让用户程序使用printf函数 */
|
||||
int fputc(int ch, FILE *f)
|
||||
{
|
||||
if(!Sys.Inited) return ch;
|
||||
if(Sys.Clock == 0) return ch;
|
||||
|
||||
int _index = Sys.MessagePort;
|
||||
if(_index == COM_NONE) return ch;
|
||||
|
@ -446,11 +446,7 @@ extern "C"
|
|||
|
||||
if(_printf_sp)
|
||||
{
|
||||
//_printf_sp->SendData((byte)ch);
|
||||
//byte bt = (byte)ch;
|
||||
//_printf_sp->Write(&bt, 1);
|
||||
ByteArray bs(ch, 1);
|
||||
_printf_sp->Write(bs);
|
||||
_printf_sp->Write(ByteArray(ch, 1));
|
||||
}
|
||||
|
||||
isInFPutc = false;
|
||||
|
|
11
Sys.cpp
11
Sys.cpp
|
@ -130,9 +130,6 @@ void SysStop()
|
|||
|
||||
TSys::TSys()
|
||||
{
|
||||
Inited = false;
|
||||
Started = false;
|
||||
|
||||
#ifdef STM32F0
|
||||
Clock = 48000000;
|
||||
#elif defined(STM32F1)
|
||||
|
@ -144,7 +141,7 @@ TSys::TSys()
|
|||
CystalClock = HSE_VALUE; // 晶振时钟
|
||||
MessagePort = COM1; // COM1;
|
||||
|
||||
IsGD = Get_JTAG_ID() == 0x7A3;
|
||||
bool IsGD = Get_JTAG_ID() == 0x7A3;
|
||||
|
||||
#ifdef STM32F0
|
||||
void* p = (void*)0x1FFFF7AC; // 手册里搜索UID,优先英文手册
|
||||
|
@ -251,8 +248,6 @@ void TSys::InitClock()
|
|||
Clock = RCC_GetSysClock();
|
||||
SystemCoreClock = Clock;
|
||||
}
|
||||
|
||||
Inited = true;
|
||||
}
|
||||
|
||||
void TSys::Init(void)
|
||||
|
@ -284,6 +279,7 @@ void TSys::ShowInfo()
|
|||
debug_printf("%s::%s Code:%04X ", Company, Name, Code);
|
||||
debug_printf("Ver:%x.%x Build:%s\r\n", *ver++, *ver++, BuildTime);
|
||||
debug_printf("SmartOS::");
|
||||
bool IsGD = Get_JTAG_ID() == 0x7A3;
|
||||
if(IsGD)
|
||||
debug_printf("GD32");
|
||||
else
|
||||
|
@ -500,7 +496,6 @@ void TSys::Start()
|
|||
#if DEBUG
|
||||
//AddTask(ShowTime, NULL, 2000000, 2000000);
|
||||
#endif
|
||||
Started = true;
|
||||
if(OnStart)
|
||||
{
|
||||
// 设置重载值,让其每1ms重载一次
|
||||
|
@ -514,7 +509,7 @@ void TSys::Start()
|
|||
void TimeSleep(uint us)
|
||||
{
|
||||
// 在这段时间里面,去处理一下别的任务
|
||||
if(Sys.Started && us != 0 && us >= 50)
|
||||
if(Sys.Clock > 0 && us != 0 && us >= 50)
|
||||
{
|
||||
TaskScheduler* sc = Task::Scheduler();
|
||||
// 记录当前正在执行任务
|
||||
|
|
Loading…
Reference in New Issue