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

查看: 2309|回复: 0

SMT32 的 PWM 相关问题

[复制链接]

12

主题

49

回帖

0

蝴蝶豆

新手上路

最后登录
2018-3-26
发表于 2011-8-5 23:11:05 | 显示全部楼层 |阅读模式
    我用的是意法半导体公司推出STM32F100 核心板    我用MDK 编写完程序后  用它自身带的SWD仿真     在线仿真可以输出波形 (  但是把核心板断电后 在上电使其独自工作 它就不输出了 )  一般情况下 在线仿真玩后 就 把程序下进去了    但是这个就是不行  不知道是什么原因。 之后我又下了别的程序 都很正常  说明芯片是好的               
程序如下:
#include "stm32f10x.h"
/*********时钟配置*********/
RCC_ClocksTypeDef RCC_ClockFreq;
void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;
  RCC_DeInit();
  RCC_HSEConfig(RCC_HSE_ON);
  HSEStartUpStatus=RCC_WaitForHSEStartUp();
  if(HSEStartUpStatus==SUCCESS)
  {
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  RCC_PCLK1Config(RCC_HCLK_Div2);
  RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  FLASH_SetLatency(FLASH_Latency_2);
  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_3);
  RCC_PLLCmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  while(RCC_GetSYSCLKSource()!=0x08);
  }
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_TIM1,ENABLE);
}
void TIM_Configuration()
{
    TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
   TIM_DeInit(TIM1); //重设为缺省值//tim初始设置
  TIM_BaseInitStructure.TIM_Prescaler =100;//预分频(时钟分频)72M/4000=18K
    TIM_BaseInitStructure.TIM_Period = 9;//装载值 18k/144=1.8hz 就是说向上加的10000便满了   
    TIM_BaseInitStructure.TIM_ClockDivision =TIM_CKD_DIV1;
    TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上加
    TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);

    //TIM1_OC1模块设置(设置1通道占空比)
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;     //PWM模式2
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//正向通道有效
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;   //反向通道也有效
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;   //互补端的极性
  TIM_OCInitStructure.TIM_Pulse = 5;    //占空时间 10000中有5000的时间为低,互补的输出正好相反
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  
    TIM_Cmd(TIM1, ENABLE);  //TIM1开启
    TIM_CtrlPWMOutputs(TIM1, ENABLE);  //TIM1_OC通道输出PWM(一定要加)
}
void GPIO_Configuration(void)
{
 GPIO_InitTypeDef GPIO_InitStructure; 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
}           
int main(void)
{
  RCC_Configuration();
 GPIO_Configuration();
 TIM_Configuration();
 while(1)
 {
 }
}  
急需求解       
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版