你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8L051 串口映射到PC5/PC6接收不进中断

[复制链接]
小小小太白 提问时间:2016-11-22 00:15 /
阅读主题, 点击返回1楼
收藏 2 评论16 发布时间:2016-11-22 00:15
16个回答
飞翔的荷兰人号 回答时间:2016-11-28 23:14:18
stm8_interrupt_vector.c里的struct interrupt_vector const _vectab[]结构体数组里,对应的中断向量有没有匹配啊

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

小小小太白 回答时间:2016-11-29 09:06:04
本帖最后由 小小小太白 于 2016-11-29 09:08 编辑
飞翔的荷兰人号 发表于 2016-11-28 23:14
stm8_interrupt_vector.c里的struct interrupt_vector const _vectab[]结构体数组里,对应的中断向量有没有 ...

已将RX/TX短接,示波器看到波形,也就是之前说的发送没问题(在之前的工作中,外围设备已完全正确收到CPU发送的指令),发送采用的是查询发送模式。
短接后仍无法进入接收中断。且别的几个中断均能正常进入。
现在可以确定的是,端口复用功能配置、串口时钟、总中断、串口配置应该都没问题。
部分代码如下:
void USART_Config(void)
{
   USART_DeInit(USART1);
   CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);         //开时钟
   SYSCFG_REMAPDeInit();                                                            
   SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortC,ENABLE);    //复用PC5,PC6为串口
   USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1,
                   USART_Parity_No, USART_Mode_Tx|USART_Mode_Rx);      GPIO_Init(TXD_GPIO_PORT, TXD_GPIO_PIN, GPIO_Mode_Out_PP_High_Fast);              //高速推挽输出
  GPIO_Init(RXD_GPIO_PORT, RXD_GPIO_PIN, GPIO_Mode_In_PU_No_IT);                    //
  
   USART_ClearITPendingBit(USART1, USART_IT_RXNE);
   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);          //开接收中断
/* Enable USART */
   USART_Cmd(USART1, ENABLE);
}

struct interrupt_vector const _vectab[] = {
       {0x82, (interrupt_handler_t)_stext}, /* reset */
       {0x82, (interrupt_handler_t)RTC_CSSLSE_IRQHandler},        /* irq4 - RTC/ CSS on LSE interrupt */
       {0x82, (interrupt_handler_t)EXTI0_IRQHandler},                        /* irq8 - External IT PIN0 interrupt */
       {0x82, (interrupt_handler_t)USART1_RX_TIM5_CC_IRQHandler}, /* irq28 */
};

飞翔的荷兰人号 回答时间:2016-11-29 16:00:22
小小小太白 发表于 2016-11-29 09:06
已将RX/TX短接,示波器看到波形,也就是之前说的发送没问题(在之前的工作中,外围设备已完全正确收到CPU ...

我看你把struct interrupt_vector const _vectab[]里面没有用到的都删了,这个是中断向量表,没用到的也不能删吧,不过我没试过,你其他中断能正常用吗?还有就是中断服务函数INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)的第二个参数跟中断向量表是一致的你中断向量表里删了,这里对应上没。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

小小小太白 回答时间:2016-11-29 16:48:56
飞翔的荷兰人号 发表于 2016-11-29 16:00
我看你把struct interrupt_vector const _vectab[]里面没有用到的都删了,这个是中断向量表,没用到的也 ...

关于删掉东西的问题,我专门测试过,别的中断都正常。应该没问题。而且我是粘贴这些代码时嫌没用的太多看着太乱才删掉的,之前是一直存在的。
zbber 回答时间:2016-11-29 21:35:11
没有弄过这个端口复用,帮顶
zero99 回答时间:2016-12-5 10:24:15
楼主下次发【求助】啊
じ☆ve沫上,蘤開。灬 回答时间:2017-1-11 13:21:29
在发完以后把串口发送中断关掉  然后打开串口接收中断  接收也是  
发完收完关中断  下一次发送接收再开中断试试
12
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版