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

查看: 2268|回复: 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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版