у нас активно применяются STR912, UART использовал по разному и с разных сторон

, никаких нареканий на работу нет! это вы что то не так конфигурируете.
Библиотеку ST не пользую, чего и вам советую.
Вот для примера мой драйвер уарта, может чего присмотрите.
На всяк код инициализации PLL
Код
SCU_CLKCNTR_bit.MCLKSEL = 2; //fMSTR = fOSC;
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
SCU_CLKCNTR_bit.RCLKDIV = RCLK_DIV;
SCU_CLKCNTR_bit.AHBDIV = HCLK_DIV;
SCU_CLKCNTR_bit.APBDIV = PCLK_DIV;
SCU_CLKCNTR_bit.BRSEL = BRCLK_DIV;
SCU_CLKCNTR_bit.USBSEL = USBCLK_DIV;
SCU_CLKCNTR_bit.PHYSEL = 0;//MII_PHYCLK output disabled (default)
SCU_CLKCNTR_bit.TIM01SEL = 0;//timer External clock disabled
SCU_CLKCNTR_bit.TIM23SEL = 0;//timer External clock disabled
SCU_CLKCNTR_bit.FMISEL = FMICLK_DIV;
SCU_CLKCNTR_bit.EMIRATIO = EMI_BCLK_DIV;
SCU_PWRMNG = 0x80; //run mode,The Flash is not to enter power down mode during debug mode, Interrupt code executes at the speed defined by the RCLKDIV[2:0]
SCU_ITCMSK = 0x1F; //all masked
SCU_SCR0_bit.P30_SELEDBG = 0;//Port 3.0 not configured for External Debug Request / ETM trigger
/************************* FLASH & SRAM CONFIG ************************************/
//PCGR0
SCU_PCGR0_bit.FMI =1;
SCU_PCGR0_bit.PQFBC =1;
SCU_PCGR0_bit.SRAM_ARBITER =1;
SCU_PCGR0_bit.SRAM = 1;
//PRR0
SCU_PRR0_bit.RST_PFQBC_AHB = 1;
SCU_PRR0_bit.RST_SRAM_ARBITER = 1;
SCU_PRR0_bit.RST_PQFBC = 1;
SCU_PRR0_bit.RST_FMI = 1;
//MGR0
SCU_MGR0_bit.MSK_SRAM_ARBITER = 1;
SCU_MGR0_bit.MSK_SRAM = 1;
SCU_MGR0_bit.MSK_PQFBC = 1;
//PECGR0
SCU_PECGR0_bit.SRAM_ARBITER = 1;
SCU_PECGR0_bit.SRAM = 1;
SCU_PECGR0_bit.PQFBC = 1;
SCU_PECGR0_bit.FMI = 1;
/************************* PLL INIT **********************************************/
SCU_PLLCONF = 0; //disable PLL clear divider
SCU_PLLCONF |= (192<<8); //update PLLN field
SCU_PLLCONF |= 25; //update PLLM field
SCU_PLLCONF |= (2<<16); //update PLLP field
SCU_PLLCONF_bit.PLL_EN = 1; //enable PLL 96 MGz
while (!(SCU_SYSSTATUS&bPLL_LOCK));//ждем захвата PLL
SCU_CLKCNTR_bit.MCLKSEL = 0; //fMSTR = fPLL;