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

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

[复制链接]
小小小太白 提问时间:2016-11-22 00:15 /
卡在这里好几个晚上了。。。程序配置应该没问题,因为TX口发出的数据很正常。示波器看了RX口,有波形,但程序死活不进串口中断。在论坛看到有类似的问题,说的是STM8S103,串口映射到PD5/PD6,正好也是AD通道,于是在程序要把AD的施密特触发器打开,坑。。。那我看了下我的片子,PC5/PC6同时也是SPI和TIM2的复用口。可是我试了几个操作,还是不行啊。求大神指点一二
收藏 2 评论16 发布时间:2016-11-22 00:15

举报

16个回答
小小小太白 回答时间:2016-11-22 00:21:10

附串口代码:
        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);                  
        CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);  //时钟
        SYSCFG_REMAPDeInit();
        SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortC,ENABLE);   //映射到PC5/PC6
        USART_DeInit(USART1);           
        USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1,
                   USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));
                                                                        
         USART_ClearITPendingBit(USART1, USART_IT_RXNE);
         USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);    //接收中断
/* Enable USART */
          USART_Cmd(USART1, ENABLE);
小小小太白 回答时间: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 */
};

peter001 回答时间:2016-11-22 00:40:00
nvic部分配置了没

评分

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

查看全部评分

小小小太白 回答时间:2016-11-22 00:51:08

在STM32中用的NVIC吧。STM8我用的一直都是在interrupt_vector配置一下就OK了
peter001 回答时间:2016-11-22 08:03:15
小小小太白 发表于 2016-11-22 00:51
在STM32中用的NVIC吧。STM8我用的一直都是在interrupt_vector配置一下就OK了

昨晚看帖看迷糊了
高二毛 回答时间:2016-11-22 08:53:09
感觉不应该是STM8的问题呢。关注一下,手头没有这个芯片,看后面的回复。
小小小太白 回答时间:2016-11-22 09:31:46
高二毛 发表于 2016-11-22 08:53
感觉不应该是STM8的问题呢。关注一下,手头没有这个芯片,看后面的回复。

新手上路,直接拿库函数操作比较容易上手,也就是在这个过程中一次次跳进STM8的坑....
anobodykey 回答时间:2016-11-22 09:49:13
没有弄过这个端口复用,帮顶
小小小太白 回答时间:2016-11-23 07:36:13
来人啊,贴莫沉
小小小太白 回答时间:2016-11-28 15:01:20
peter001 发表于 2016-11-22 08:03
昨晚看帖看迷糊了

有什么建议么?
飞翔的荷兰人号 回答时间:2016-11-28 23:14:18
stm8_interrupt_vector.c里的struct interrupt_vector const _vectab[]结构体数组里,对应的中断向量有没有匹配啊

评分

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

查看全部评分

飞翔的荷兰人号 回答时间: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
没有弄过这个端口复用,帮顶
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版