OpenEdv-开源电子网

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

串口4的MODBUS DMA发送

[复制链接]

19

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2013-8-29
在线时间
30 小时
发表于 2014-3-31 20:27:45 | 显示全部楼层 |阅读模式
用STM32作MODBUS, 使用串口4,但是初始化时执行到 MY_NVIC_Init(3,1,UART4_IRQChannel,2);这句就停了,
初始化函数如下,什么原因引起的?
void uart4_init(u32 pclk2,u32 bound)
{    
float temp;
u16 mantissa;
u16 fraction;   
temp=(float)(pclk2*1000000)/(bound*16);//得到UART4DIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分  
    mantissa<<=4;
mantissa+=fraction; 
RCC->APB2ENR|=1<<4;   //使能PORTC口时钟  
RCC->APB1ENR|=1<<19;  //使能串口4时钟 
GPIOC->CRH&=0XFFFF00FF;//IO状态设置
GPIOC->CRH|=0X00004B00;//IO状态设置 
RCC->APB1RSTR|=1<<19;   //复位串口4
RCC->APB1RSTR&=~(1<<19);//停止复位     
//波特率设置
  UART4->BRR=mantissa; // 波特率设置  
UART4->CR1|=0X200C;  //使能,1位停止,无校验位.
#if EN_UART4_RX  //如果使能了接收
//使能空闲中断
//UART4->CR1|=1<<8;    //PE中断使能
UART4->CR1|=1<<4;    //IDLE中断使能
UART4->CR1|=1<<5;    //接收缓冲区非空中断使能
UART4->CR1|=1<<6;    //发送缓冲区非空中断使能
   
MY_NVIC_Init(3,1,UART4_IRQChannel,2);//组2,抢占优先级3,响应优先级3
LED1=0;
#endif
}

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

使用道具 举报

13

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2013-12-12
在线时间
13 小时
发表于 2014-3-31 20:56:05 | 显示全部楼层
看看,你的中断服务函数名写对没,如果与启动文件里面不对应,会有此现象!
回复 支持 反对

使用道具 举报

19

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2013-8-29
在线时间
30 小时
 楼主| 发表于 2014-3-31 22:09:07 | 显示全部楼层
中断服务函数名void UART4_IRQHandler(void)   应该没错;
启动文件中有DCD     UART4_IRQHandler; 还有EXPORT  UART4_IRQHandler           [WEAK]
回复 支持 反对

使用道具 举报

13

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2013-12-12
在线时间
13 小时
发表于 2014-3-31 23:24:39 | 显示全部楼层
那就自己仿真看看,卡到哪里了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-1 00:05:28 | 显示全部楼层
回复【4楼】luofeng:
---------------------------------
按仿真的X图标,看看死在哪里?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2013-8-29
在线时间
30 小时
 楼主| 发表于 2014-4-1 22:53:08 | 显示全部楼层
初始化时执行到 MY_NVIC_Init(3,1,UART4_IRQChannel,2);这句就死机
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-1 23:03:27 | 显示全部楼层
回复【6楼】bluebird45:
---------------------------------
估计就是中断服务函数的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
发表于 2014-4-2 08:01:52 | 显示全部楼层

串口4有DMA???
|

创新超越梦想,拼搏创造奇迹....
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-2 23:44:21 | 显示全部楼层
回复【8楼】废墟崛起之厦:
---------------------------------
有的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-12 19:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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