|
stm32f10X系列MPU的keil仿真问题.
[复制链接]
发现了一个keil仿真软体的BUG.
USART_DeInit(USART1);
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
/* Configure USART1 */
USART_Init(USART1, &USART_InitStructure);
/* Initialize variables for data transmission */
TxCount = 0;
TxLength = 4;
/* Set DE pin to low level */
GPIOC->BRR = GPIO_Pin_6;
/* Enable USART1 */
USART_Cmd(USART1, ENABLE);
/* Enable USART1 Transmit buffer empty interrupt */
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
这一个示例代码在keil中并不能仿真,原因很简单,USART_DeInit(USART1);这句话去了就可以了.为了这个句话我搞了一天,原因可能在于keil的仿真软体不能很好地仿真片上的时钟与复位逻辑,从而这句话,影响到了UART的TXE中断register的正常置位(本位是由硬体置位).也是中断服务程序不能进入,死机了.
一个小问题搞一天,为了搞定它,还找了proteus,但它还不技术cortex-M3呢,也就不要说STM32系列的芯片了.proteus真是做玩具开发的好软体,很真观.
MDK是面向低端MPU应用的软件包,有也BUG也正常,但STM32F101不知BUG有多少.晕啊,小东西,因为不赚钱了,没人上心的.
|
|