OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8415|回复: 5

我用stm8s跟485与上位机通信,一直接收不到上位机的数据,找不出问题来

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2014-8-4
在线时间
0 小时
发表于 2014-8-4 17:31:58 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]/************************************************************************************************** *函数:void UART1_RX_RXNE(void) *功能:串口接收中断函数 *参数: *返回: *说明: **************************************************************************************************/ #pragma vector=0x14 __interrupt void UART1_RX_RXNE(void) { MAX_485_RX;//485 使能拉低,接收数据 if (UART1_GetITStatus(UART1_IT_RXNE) != RESET) { data[j++] = UART_ReceiveByte(); } if(j == 9) { //UART_SendString(addr, sizeof(addr)); mark = false; j = 0; MAX_485_TX;//485 使能拉高,发送数据 } UART1_ClearITPendingBit(UART1_IT_RXNE);//清楚中断标志 } /************************************************************************************************** *函数:void TIM1_OVR_UIF(void) *功能:串口定时发送中断函数 *参数: *返回: *说明: **************************************************************************************************/ #pragma vector=0x0F __interrupt void TIM1_OVR_UIF(void) { MAX_485_TX;//485 使能拉高,发送数据 UART_SendString(addr, sizeof(addr)); UART_SendString(data, sizeof(data)); TIM2_ClearITPendingBit(TIM2_IT_UPDATE);//清楚中断标志 MAX_485_RX;//485 使能拉低,接收数据 }[/mw_shl_code]
[mw_shl_code=c,true]#define MAX_485_PORT GPIOD #define MAX_485_TR_PIN GPIO_PIN_4 #define MAX_485_TX MAX_485_PORT->ODR |= (uint8_t)MAX_485_TR_PIN //485 使能拉高,发送数据 #define MAX_485_RX MAX_485_PORT->ODR &= (uint8_t)(~MAX_485_TR_PIN) //485 使能拉低,接收数据 /************************************************************************************************** *函数:void CLK_INIT(void) *功能:时钟初始化 *参数:无 *返回:无 *说明: **************************************************************************************************/ void CLK_INIT(void) { CLK_HSICmd(ENABLE);//使能内部高频RC CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);//内部高速RC振荡时钟分频 16MHZ CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV8);//CPU核心时钟分频 CLK_ClockSwitchCmd(ENABLE); //切换使能 CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO ,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);//切换配置 CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1,ENABLE);//串口1时钟开 } /************************************************************************************************** *函数:void TIM2_INIT(void) *功能:定时器2初始化 *参数:无 *返回:无 *说明: **************************************************************************************************/ void TIM2_INIT(void) { TIM2_TimeBaseInit(TIM2_PRESCALER_1024, 0X3D09);//64分频得到31250HZ的定时器时钟,1s TIM2_Cmd(ENABLE);//启动定时器 TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);//中断配置 } /************************************************************************************************** *函数:void UART1_INIT(void) *功能:串口1初始化 *参数:无 *返回:无 *说明: **************************************************************************************************/ void UART1_INIT(void) { UART1_Cmd(ENABLE);//开串口 UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE); //UART1_ITConfig(UART1_IT_TXE, DISABLE);//关串口开始发送中断 //UART1_ITConfig(UART1_IT_TC, DISABLE);//关串口发送结束中断 UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);//UART1_IT_RXNE,接收数据寄存器非空或溢出错误中断 UART1_WakeUpConfig(UART1_WAKEUP_IDLELINE );//被空闲总线唤醒 UART1_ReceiverWakeUpCmd(ENABLE);//开接收唤醒 GPIO_Init(MAX_485_PORT, MAX_485_TR_PIN, GPIO_MODE_OUT_PP_LOW_FAST);//初始化GPIO,高速推挽输出低电平 //MAX_485_RX;//485 使能拉低,接收数据 }[/mw_shl_code]


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-8-4 19:08:53 | 显示全部楼层
直接用串口,能收到数据么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-1-9
在线时间
1 小时
发表于 2015-12-20 11:47:52 | 显示全部楼层
如果你使用的是Max485那么请不要尝试在中断里频繁拉高或者拉低RE_DE引脚!!
回复

使用道具 举报

7

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-8-24
在线时间
16 小时
发表于 2016-1-1 22:39:22 | 显示全部楼层
关注下485通信问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-1-2 11:16:38 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2015-3-16
在线时间
0 小时
发表于 2018-8-4 15:54:15 | 显示全部楼层
你开的是tim2,中断却在Tim1里面写函数,而且清中断又用tim2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表