RCC_Configuration();
Delay_Init(72);
GPIO_Configuration();
GM8125_Configuration();
NVIC_Configuration();
USART1_Configuration();
USART2_Configuration();
UART4_Configuration(7200);
UART5_Configuration(7200);
Set_GM8125(1, 57600);
Set_GM8125(2, 57600);
UART4_Configuration(57600);
UART5_Configuration(57600);
USART2_Configuration(9600);
USART3_Configuration(115200);
MMC_SPI_Config(); //SPI3
I2C_mConfiguration();
TIM3_Configuration();//1s定时器
RTC_Config();
其中比较值得提的一点就是中断优先级的初始化,因为使用的中断比较多,各外设中断优先级最好不要嵌套,应该使用同一分组。与大多ARM一样,STM32采用4bit控制优先级,分为抢占优先级NVIC_IRQChannelPreemptionPriority以及相应优先级NVIC_IRQChannelSubPriority。先对优先级控制器进行初始化,确定采用几bit用来分组抢占,几bit用来响应,4bit最多可分为16组,每组一个中断,最少分为一个组,每组16个中断,优先级高的组可以抢占优先级低的组实现中断的嵌套,同组内不能嵌套,但先响应优先级高的中断。在程序设计时,应尽量不出现中断嵌套的情况,所以一共分为一个组。
对于串口拓展芯片GM8125,一片可以拓展5个RS232口,母口是子口通信速率的6倍,母口的波特率可设置。在使用过程中虽然只采用了STM32的一个串口进行通信,但是通过不同IO的选择可以实现5个子口互不干扰的收发数据,就和原生串口一样使用。 |