示例#1
0
bool BoardSupportPackage::init() {
	bool result = false;
	SysTick_Config(SystemCoreClock/BSP_TICKS_PER_SECOND);
	initRCC();
	initGPIO_Power();
	initGPIO_Fan();
	init_DHT11();
	init_SPI();
	init_TIM();
	init_PWM();
 	screenInit();

	result = true;
	return result;
}
void initClock(u8 PLL)//PLL:2-16
{
	uc tmp = 0;
	initRCC();
	RCC -> CR |= 1 << 16; //外部高速时钟使能HSEON
	while(!(RCC -> CR >> 17)); //等待外部时钟就绪
	RCC -> CFGR = 0x00000400; //0X00002000; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
	PLL -= 2; //抵消2个单位
	RCC -> CFGR |= PLL << 18; //设置PLL值 2~16
	RCC -> CFGR |= 1 << 16; //PLLSRC ON
	//FLASH -> ACR |= 0x32; //FLASH 2个延时周期
	RCC -> CR |= 0x01000000; //PLLON
	while(!(RCC -> CR >> 25)); //等待PLL锁定
	RCC -> CFGR |= 0x00000002; //PLL作为系统时钟
	while(tmp != 0x02) //等待PLL作为系统时钟设置成功
	{
		tmp = RCC -> CFGR >> 2;
		tmp &= 0x03; //tmp读取SWS值(系统时钟切换状态)
	}
	
}
示例#3
0
int main(){
	u8 res;
	initRCC();
	initGPIO();
	initTIM2();
	initUSART3();
	initI2C1();

	__enable_irq();                       // глобальное включение прерывания

	// I2C1_tx(0xD0,0x6B,0x00);
	// I2C1_tx(0xD0,0x1B,0xE0);
	// I2C1_tx(0xD0,0x1C,0xE0);
	read_I2C1(GY521_ADRESS,WHO_I_AM);
	// read_data_acc();
	green_on();
	while(1){
	    while(!number_of_tasks)
	        {}
	    (*buffer_of_tasks[head_of_tasks])();
	    deleteTask();
	    }
	return 0;
}