OpenEdv-开源电子网

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

调试PWM产生的问题

[复制链接]

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
发表于 2014-5-22 16:15:43 | 显示全部楼层 |阅读模式
5金钱
很无语的问题:
程序如是:
int main()
{
    初始化;       //包括PWM端口时钟和输出模式
    PWM配置;   //配置TIM1和TIM3,但未定时器使能
    TIM1定时器使能;
    TIM3定时器使能
    while(1)
    {
    }

这样测试PWM输出是正常的,但是串口通讯时:
int main()
{
    初始化;                       //包括PWM端口时钟和输出模式
    while(1)
    {
            
            if (条件1)                //条件内容是串口收到数据
                
PWM配置;        //配置TIM1和TIM3,但未定时器使能
            if(条件2)
                TIM3定时器使能
;
           if(条件3)
                TIM1定时器使能;

    }

现在我不管怎么测试,同时让条件2和3成立,或者分别成立,但是只有TIM3有输出,TIM1没有输出。硬件跟踪时条件3就是1,但TIM1就是没有输出,请问哈高手们这又是为何?

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

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
 楼主| 发表于 2014-5-22 16:18:17 | 显示全部楼层
补充哈
1  第一个主函数TIM3定时器使能后面忘加分号
2  测试条件2和3时都是在条件1成立的前提下
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-5-22 16:19:24 | 显示全部楼层
1  你用 的T1的哪个脚, 是不是跟USART 冲突了
2 调试:
if(条件3)
{
  发送一条信息,证明进到这里了
                TIM1定时器使能;
}
回复

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
 楼主| 发表于 2014-5-22 16:48:07 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
谢谢您哈,按照您的方法试了,我让继电器动作,发现进入条件3后继电器有动作,但是PWM还是没有输出。会不会是另外一个问题引起的:串口在反复不断的发送数据,也就是PWM在反复的配置和使能(至少TIM3可以),难道高级定时器这地方挂了?
回复

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
 楼主| 发表于 2014-5-22 16:57:02 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
TIM1用的PA8,没跟串口有冲突。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-22 18:32:52 | 显示全部楼层
回复【4楼】北方的马克思:
---------------------------------
不要不停的配置定时器!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
 楼主| 发表于 2014-5-23 10:28:48 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
只配置一次,TIM1还是不工作,问题还是跟以前一样,也不知道哪有问题,还有一个串口问题,麻烦原子哥看看:
void USART1_IRQHandler(void)   //串口1中断服务程序
{
static u8 Rxd_Num;        //接收到的数据
u8 i=0, Send_Buf[TXDNUM];

if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)     //接收中断置位
{
RXD_BUF[Rxd_Num++] =USART_ReceiveData(USART1);      //(USART1->DR);   
if(RXD_BUF[0] ==RXDFun)     //若第一个字节为接受功能字继续接受
{
if(Rxd_Num == 3)
{
Rxd_Num = 0;  //接受字节数清0
RXD_STA = 1;              //标志位置位,认为接收完成 

RXDArySep();      //处理接受数据
TXDAryCol();  //刷新采集数据

Send_Buf[0] = TXDFun;        //功能字
Send_Buf[1] = TXD_BUF[0];  //返回数据高8位
Send_Buf[2] = TXD_BUF[1];  //返回数据低8位
Send_Buf[3] = RXD_BUF[1];  //上位机控制字高8位
Send_Buf[4] = RXD_BUF[2];  //上位机控制字低8位

for(i=0; i<TXDNUM; i++)  //发送给上位机
{
USART_SendData(USART1, Send_Buf);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);   //等待发送完成
// USART_ClearFlag(USART1,USART_FLAG_TC);               //清除发送完成标志位 
}
}
}
else  //第一个字节不是接受功能字
{
USART_ReceiveData(USART1);     //读USART_DR寄存器完成对RXNE位清除

     } 
}
STM32接受正常,但是上位机一会能收到STM32回复的数据一会又收不到,复位一下还是老样子,STM32能正常执行上位机的指令,说明进入串口中断后能正常退出,有发送数据,但就是不正常。>
回复

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
 楼主| 发表于 2014-5-23 10:42:58 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我看了哈资料。发现PA8 (TIM1_CH1) USART1(PA9,PA10,)都跟TIM1有关系,我貌似不去动TIM1,串口发送就正常,一动TIM1,串口发送就不正常,但是PA8(只用TIM1_CH1 WM功能) A9和PA10只用串口功能,它们会相互影响么?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-23 23:09:57 | 显示全部楼层
回复【8楼】北方的马克思:
---------------------------------
你没有配置TIM1_CH1,就不会影响.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2014-1-24
在线时间
103 小时
 楼主| 发表于 2014-5-24 13:11:08 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
那就是我用了TIM1_CH1了,所以PWM和USART1都不正常。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 17:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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