本帖最后由 遇见未知的你 于 2016-12-23 00:01 编辑
我先从主函数开始,告诉大家我如何移植的程序并阐述一些个人观点,大神勿喷,欢迎纠错。
int main(void)
{
Clock_Enable(); //使能系统时钟
NVIC_Configuration(); //配置嵌套中断
SysTick_Config(SystemCoreClock / 1000); //systick时钟采用108M,产生1ms时基,中断优先级最低0xFFF
TIM1_PWMOutMotor_Init(); //初始化Tim4 PWMOUT 周期2.5ms 频率400hz 高电平0.875ms~2.0ms
delay_ms(20); //500ms后系统稳定
GPIO_Configuration();
Usart2Init(115200); //配置串口
i2cInit(); //初始化I2C总线
TIM3_PWMInCap_Init(); //初始化Tim2 PWMin捕获 周期为20ms,脉冲宽度为1ms~2ms之间
delay_ms(500); //500ms后系统稳定
Turn_On_LEDs(); //红灯和绿灯点亮,进入等待
init_mpu9150(); //初始化传感器
delay_ms(3000); //延迟3s等待系统稳定,等待接收机与遥控连接,等待是否启动compass校准
《1》 Clock_Enable(); //使能系统时钟---主要用于使能所有GPIO时钟,以下为原函数:void Clock_Enable(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
}
《2》 NVIC_Configuration(); //配置嵌套中断 这有一个讲的比较好的帖子 ( 请在新网页打开 blog.sina.com.cn/s/blog_1456c40890102vaq1.html )
中断就是CPU在执行一件事A时突然有一件急事B要做,于是CPU停下手头的事A,保护好现场(为一会处理完急事B可以继续回来处理A)去做急事B,做完后立即回来做A.这就是一次中断。为什么要中断?为了实现实时处理与同步操作,在不写操作系统的情况下单片机不能同时做两件事,中断可以实现
|