找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6145|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32學(xué)習(xí)(設(shè)置TIM4輸出4路 pwm J-LINK仿真驗(yàn)證)源碼與教程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:81424 發(fā)表于 2018-11-26 13:14 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STM32F103C8T6:
stm32的pwm輸出只要設(shè)置好在主循環(huán)前調(diào)用一次即可, 對(duì)用的IO就可以持續(xù)的輸出PWM
TIM4配置PWM過(guò)程程序:



J-LINK仿真配置

1. 選擇“ Options for Target” 選項(xiàng)


2. 在“ Debug” 中選擇“Use Simulator" 注意下面的配置


3. 配置好編譯下




4.  選擇Debug模式調(diào)試


5. 進(jìn)入Debug模式后選擇

6. 配置pwm輸出引腳








配置好輸出引腳直接”close“掉

7. 開(kāi)始仿真運(yùn)行







貼一下程序記錄下:
  1. /*
  2. //TIM4 CH1 PWM 輸出設(shè)置
  3. //PWM 輸出初始化
  4. //arr:自動(dòng)重裝值
  5. //psc:時(shí)鐘預(yù)分頻數(shù)
  6. STM32F103C8T6
  7. PB6 - TIM4_CH1
  8. PB7 - TIM4_CH2
  9. PB8 - TIM4_CH3
  10. PB9 - TIM4_CH4
  11. */
  12. void Tim4_PWM_Init(u16 arr,u16 psc)
  13. {
  14.         GPIO_InitTypeDef GPIO_InitStructure;
  15.     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  16.     TIM_OCInitTypeDef TIM_OCInitStructure;

  17.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能 TIMx 外設(shè)
  18.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能 PB 時(shí)鐘
  19.         TIM_DeInit(TIM4);

  20.   //設(shè)置該引腳為復(fù)用輸出功能,輸出 TIM4 CH1 的 PWM 脈沖波形
  21.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //TIM4_CH1
  22.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用功能輸出
  23.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  24.         GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化 GPIO

  25.         TIM_TimeBaseStructure.TIM_Period = arr; //設(shè)置自動(dòng)重裝載周期值
  26.         TIM_TimeBaseStructure.TIM_Prescaler =psc; //設(shè)置預(yù)分頻值 不分頻
  27.         TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設(shè)置時(shí)鐘分割:TDTS = Tck_tim
  28.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計(jì)數(shù)
  29.         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //初始化 TIMx
  30.         
  31.         
  32.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //CH1 PWM2 模式
  33.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
  34.         TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
  35.         
  36.         
  37.         TIM_OCInitStructure.TIM_Pulse = 200; //設(shè)置待裝入捕獲比較寄存器的脈沖值
  38.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //OC1 高電平有效
  39.         TIM_OC1Init(TIM4, &TIM_OCInitStructure); //根據(jù)指定的參數(shù)初始化外設(shè) TIMx
  40.         TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); //CH1 預(yù)裝載使能
  41.         
  42.         
  43.         TIM_OCInitStructure.TIM_Pulse = 400; //設(shè)置待裝入捕獲比較寄存器的脈沖值
  44.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //OC2 高電平有效
  45.         TIM_OC2Init(TIM4, &TIM_OCInitStructure); //根據(jù)指定的參數(shù)初始化外設(shè) TIMx
  46.         TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); //CH2 預(yù)裝載使能
  47.         
  48.         
  49.         TIM_OCInitStructure.TIM_Pulse = 600; //設(shè)置待裝入捕獲比較寄存器的脈沖值
  50.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //OC1 高電平有效
  51.         TIM_OC3Init(TIM4, &TIM_OCInitStructure); //根據(jù)指定的參數(shù)初始化外設(shè) TIMx
  52.         TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable); //CH3 預(yù)裝載使能
  53.         
  54.         
  55.         TIM_OCInitStructure.TIM_Pulse = 800; //設(shè)置待裝入捕獲比較寄存器的脈沖值
  56.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //OC1 高電平有效
  57.         TIM_OC4Init(TIM4, &TIM_OCInitStructure); //根據(jù)指定的參數(shù)初始化外設(shè) TIMx
  58.         TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable); //CH4 預(yù)裝載使能
  59.         
  60.         
  61.         TIM_ARRPreloadConfig(TIM4, ENABLE); //使能 TIMx 在 ARR 上的預(yù)裝載寄存器
  62. //        TIM_CtrlPWMOutputs(TIM4,ENABLE);  //MOE 主輸出使能,高級(jí)定時(shí)器必須開(kāi)啟
  63.         TIM_Cmd(TIM4, ENABLE); //使能 TIMx
  64. }
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:406128 發(fā)表于 2018-11-27 10:07 | 只看該作者
多謝大佬的教程,很多時(shí)候我也想發(fā)些什么,但是技術(shù)達(dá)不到,怕誤人
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表