程序如下: int main(void) { CLK_DeInit(); //--> 时钟各变量初始化 CLK_HSECmd(ENABLE); //--> 外部高速晶振使能 while(SET != CLK_GetFlagStatus(CLK_FLAG_HSERDY)); //--> 测试外部高速晶振位是不是使能 CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //--> 外部时钟预分频器,1分频 CLK_ClockSwitchCmd(ENABLE); //--> 使能时钟切换功能 CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE); //--> 时钟切换 ( 自动切换模式 , 切换到外部高速晶振 , 禁止切换中断 ,内部时钟禁止 ) USART_Configuration();//串口配置 enableInterrupts();//允许中断 while (1) { delay(100); } } //串口接收中断 #pragma vector=0x17 __interrupt void UART2_RX_IRQHandler(void) { if(UART2_GetFlagStatus(UART2_FLAG_RXNE)!=RESET){ UART_Send( "REC OK2\n\r", 8); } UART2_ClearITPendingBit(UART2_IT_RXNE);//清除接收标志位 return; } 运行后,电脑往STM8S105发送命令后,串口接收中断能正常反应,并发回响应字符。但是只能反应一次。接下来就没反应了。加了断点观察发现,程序还一直在串口接收中断里面运行。但因为RXNE被清零了,所以虽然没有内容发出,实际上还是在中断里面运行。请问这是什么原因?如果不加UART2_ClearITPendingBit(UART2_IT_RXNE);这一句的话,就一直不断发送字符串。 |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
__interrupt void UART2_RX_IRQHandler(void)
{
if(UART2_GetFlagStatus(UART2_FLAG_RXNE)!=RESET)
{
UART2_ClearITPendingBit(UART2_IT_RXNE); //清除接收标志位应该放在这里
UART_Send( "REC OK2\n\r", 8); //你在接收中断中发送。有点不合理。至少要禁止接收中断
}
//return; 这个应去掉
}
评分
查看全部评分
刚才试了下,还是不行。只反应一次。
这是ST 官方的中断代码:
void USARTx_IRQHandler(void)
{
/* USART in Receiver mode */
if (USART_GetITStatus(USARTx, USART_IT_RXNE) == SET)
{
if (ubRxIndex < BUFFERSIZE)
{
/* Receive Transaction data */
aRxBuffer[ubRxIndex++] = USART_ReceiveData(USARTx);
}
else
{
/* Disable the Rx buffer not empty interrupt */
USART_ITConfig(USARTx, USART_IT_RXNE, DISABLE);
}
}
/* USART in Tramitter mode */
if (USART_GetITStatus(USARTx, USART_IT_TXE) == SET)
{
if (ubTxIndex < BUFFERSIZE)
{
/* Send Transaction data */
USART_SendData(USARTx, aTxBuffer[ubTxIndex++]);
}
else
{
/* Disable the Tx buffer empty interrupt */
USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
}
}
}
评分
查看全部评分