• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > stm32中输出独立的PWM波和外部中断会干扰?

stm32中输出独立的PWM波和外部中断会干扰?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了stm32控制pwm波输出,stm32输出pwm波,stm32如何输出pwm波,stm32产生pwm波,stm32 pwm波等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: stm32中输出独立的PWM波和外部中断会干扰?
描述:

stm32PWM 中断

#include "pbdata.h"

/> void RCC_Configuration(void); void GPIO_Configuration(void); void TIM3_Configuration(void);
void NVIC_Configuration(void); void EXTI_Configuration(void); void USART_Configuration(void); int fputc(int ch,FILE *f) { USART_SendData(USART1,(u8)ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); return ch; }
int main(void)
/> {     RCC_Configuration();    GPIO_Configuration();    EXTI_Configuration();
   NVIC_Configuration();  TIM3_Configuration();    USART_Configuration();
     TIM_SetCompare2(TIM3,360); while(1) { }
    } void RCC_Configuration(void) {     SystemInit();
/> RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); } void GPIO_Configuration(void)
{     GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//PWM输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //外部中断 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
/> GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX,PA.9 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX,PA.10 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;//2¢DDêy?Y?úPC.All
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure); } void TIM3_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStruct.TIM_Period=799;//3??μ TIM_TimeBaseStruct.TIM_Prescaler=99; TIM_TimeBaseStruct.TIM_ClockDivision=0; TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//?òé?   TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruct); TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OC2Init(TIM3,&TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_Cmd(TIM3,ENABLE);  
/> } void EXTI_Configuration(void)
{ EXTI_InitTypeDef EXTI_InitStructure; EXTI_ClearITPendingBit(EXTI_Line5); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);  EXTI_InitStructure.EXTI_Line=EXTI_Line5; EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure); }

void NVIC_Configuration(void) {
    NVIC_InitTypeDef NVIC_InitStructure;  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  NVIC_Init(&NVIC_InitStructure); } void USART_Configuration(void) {     USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate=9600;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_HardwareFlowC /> USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_Init(USART1,&USART_InitStructure); USART_Cmd(USART1,ENABLE); USART_ClearFlag(USART1,USART_FLAG_TC); }
外部中断的中断服务程序
void EXTI9_5_IRQHandler(void) { u16 ReadValue=0;
/> if(EXTI_GetITStatus(EXTI_Line5)==SET)   { if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)==Bit_RESET) { ReadValue =GPIO_ReadInputData(GPIOB); printf("%d\r\n",ReadValue);  }
    EXTI_ClearITPendingBit(EXTI_Line5);   delay_ms(10);   } } 问题是PWM波无法输出,去掉外部中断程序后才可以输出,但是这两个应该是独立的,现在有了干扰,不知道应该如何改。EXTI9_5这个通道我改为EXTI3,依然不能出波形。外部中断是由一个方波输入的,通过GPIOA_5产生下降沿时进中断程序


解决方案1:

中断中禁止延时,和长时间的程序运行,中断函数只是用来处理一些简单的程序,可以改变标志位之类的简单函数。禁止延时,禁止延时,禁止延时

解决方案2:

void EXTI9_5_IRQHandler(void)里面delay_ms(10);去掉 中断里面严禁加延时
中断里面严禁加延时 中断里面严禁加延时 重要的事情说三遍


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • stm32中输出独立的PWM波和外部中断会干扰?

相关文章

  • 2017-06-05 CY7C68013和上位机问题
  • 2017-06-05 一般ARM7嵌入式Linux的开发是否完全支持C++?
  • 2017-06-05 浏览器输入baiducom就会闪一下其他的网址
  • 2017-06-05 脱离单片机的开发环境,如何做一个通过JTAG的下载程序呢?
  • 2017-06-05 怎么把CC2541的电池电量获取,在广播出去
  • 2017-06-05 ce700零点唤醒问题
  • 2017-06-05 单片机做232串口通信时,上电时串口助手就收到一堆乱码
  • 2017-06-05 请问关于磁盘加载执行程序的问题,谢谢
  • 2017-06-05 请教StreamClassMinidriver的问题
  • 2017-06-17让嵌入式系统项目最终以失败收场的7大隐形杀手

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 嵌入式开发中DSP与FPGA的关系
    • at91sam9263linux的文件系统出了问题,貌似跟nandflash有关,不知道从哪下手,希望各位有经验的给提供帮助,谢谢。
    • bootloader程序与中断向量表偏移之间的关系
    • 为什么我的系统里的internet信息服务节点里没有ftp这个子节点?该怎么安装呢?请指点。
    • 如何实现与摄像头交互?
    • 关于CRC8的算法咨询,谢谢大家
    • 串口驱动
    • DNS解析缓存问题
    • STM32F407作为USB设备通过BULK端点发送数据,主机接收不到
    • 请大神们帮我看看这款液晶驱动是什么芯片,如何驱动?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有