硬件電路圖:
我的收獲:
這是STM32數據手冊上對TIM3通用定時器復用功能重映象的描述,假設讓PA6作為PWM輸出,從圖中可以看出PA6對應TIM3的通道1,
使能TIM3通道1的函數為
TIM_OC1Init();1
同樣的,如果想要使能PA7,它對應的是TIM3的通道2,那么使能通道2的函數便是:
TIM_OC2Init()1
以此類推,需要注意,使能不同相同定時器不同通道的函數是有一點小差別的,防止在程序中調用TIM_OC1Init()函數來使能TIM3通道2這種情況的發生。
注意看這里,假設使用的是TIM3的通道1,那么這里就要寫成
TIM3-》CCR11
類似的如果用TIM3定時器的通道2,這里就要相應的改為
TIM3-》CCR21
這同樣是為了防止本來計劃使用的是TIM3的通道1,反而在這里自擺烏龍寫為了TIM-》CCR2的情況,這樣的錯誤一般很隱蔽,不容易查找。
相應的程序已經上傳,但是不知道為什么在這里無法顯示程序的下載地址,需要下載可以去我的資源里下載。
工程文件為
Progect–》RVMDK(uv4)–》iSO_STM32
STM32PWM輸出實現LED燈漸亮漸滅程序:
/**說明:
*PA0:KEY1;PA1:KEY2;
*PA2:LED1;PA3:LED2;
*PA9:USART1_TX;PA10:USART1_RX
*/
#include “stm32f10x.h”
#include “stm32f10x_rcc.h”
#include “stm32f10x_gpio.h”
#include “stm32f10x_tim.h”
#include “stm32f10x_pwr.h”
#include “stm32f10x_exti.h”
#include “system_stm32f10x.h”
#include “misc.h”
void RCC_Configuration(void);
void GPIO_Configuration(void);
void TIM2_Configuration(void);
void delay_ms(u16 time);
int main()
{
u8 led_fx=1;
u16 led_dt=0;
RCC_Configuration();
GPIO_Configuration();
TIM2_Configuration();
while(1)
{
delay_ms(10);
if(led_fx==1)
{
led_dt++;
}else{
led_dt--;
}
if(led_dt》100) led_fx=0;//可以和初始值一樣
if(led_dt==0) led_fx=1;
TIM_SetCompare3(TIM2,led_dt);//通道3沒有重影像是PA2對應LED1
TIM_SetCompare4(TIM2,led_dt);//通道4沒有重影像是PA3對應LED2
}
}
void RCC_Configuration(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
//GPIO_AFIODeInit();和下面相同效果,可以查看源碼證明
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,ENABLE);//端口映射函數
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;//GPIO_Pin_3對應channel3,主函數改為:TIM_SetCompare3
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_DeInit(TIM2);
TIM_InternalClockConfig(TIM2);
//定時器初始化
TIM_TimeBaseStructure.TIM_Period = 100-1;//初始值是100,2MHz=2000KHz,2MHz/100=0.02MHz,所有周期T=1/0.02MHz=50us,示波器顯示周期應該為50us
TIM_TimeBaseStructure.TIM_Prescaler = 36-1;//36倍分頻,72MHz/36=2MHz
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
//PWM初始化
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 50;//占空比值是50,所以占空比是:50/100=50%
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC3Init(TIM2,&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_Pulse = 20;
TIM_OC4Init(TIM2,&TIM_OCInitStructure);
//TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Enable);
//TIM_ARRPreloadConfig(TIM2, ENABLE);
TIM_Cmd(TIM2,ENABLE);
TIM_CtrlPWMOutputs(TIM2,ENABLE);
}
void delay_ms(u16 time)
{
u16 i=0;
while(time--)
{
i=12000;
while(i--);
}
}
上一篇:STM32內存管理以及STM32中的堆棧
下一篇:STM32學習—如何選擇各個電路部分的主要芯片
推薦閱讀
史海拾趣
背景:在光伏膠膜領域取得成功后,福斯特開始尋求多元化發展。
發展:公司依托在光伏材料領域的技術積累和市場優勢,逐步向電子電路、鋰電等新材料領域拓展。同時,公司還成立了新材料研究院,專注于新材料的研發和創新。
成果:目前,福斯特在電子電路、鋰電等領域也取得了顯著成績,為公司帶來了新的增長點。
背景:在光伏膠膜領域取得成功后,福斯特開始尋求多元化發展。
發展:公司依托在光伏材料領域的技術積累和市場優勢,逐步向電子電路、鋰電等新材料領域拓展。同時,公司還成立了新材料研究院,專注于新材料的研發和創新。
成果:目前,福斯特在電子電路、鋰電等領域也取得了顯著成績,為公司帶來了新的增長點。
在快速發展的同時,ERGOBAHCO公司始終不忘履行社會責任和推動可持續發展。公司積極參與社會公益事業,捐款捐物支持貧困地區的教育、醫療等事業。同時,ERGOBAHCO公司還注重環保和節能減排工作,通過引進先進的環保技術和設備,實現了生產過程的綠色化、低碳化。這些舉措不僅提升了公司的社會形象,也為公司的可持續發展奠定了堅實基礎。
隨著公司規模的擴大,ERGOBAHCO公司逐漸意識到品質與創新對于品牌的重要性。公司投入大量資金引進先進的生產設備和技術,并建立了嚴格的質量管理體系。同時,ERGOBAHCO公司還鼓勵員工進行創新研發,不斷推出具有市場競爭力的新產品。這些舉措使得ERGOBAHCO公司的產品逐漸在行業內樹立了良好的口碑,品牌知名度也隨之提升。
經過幾年的艱苦打拼,Bytesonic Corporation在1987年迎來了重要的轉折點。這一年9月,公司資本金增至新臺幣500萬元,為公司的進一步擴張提供了堅實的資金基礎。有了更多的資本支持,公司開始加大在研發和市場推廣上的投入,逐漸在行業內樹立起了一定的品牌影響力。
隨著全球環保意識的提高,AIE公司也積極響應號召,將環保理念融入企業的發展戰略中。公司采用環保材料和工藝進行生產,減少了對環境的污染。同時,AIE還推出了一系列節能、環保的測試配件產品,幫助客戶實現綠色生產和可持續發展。這種環保理念和可持續發展戰略不僅提升了AIE的社會責任感,也為企業贏得了更多的市場機會。
這些故事雖然是虛構的,但它們基于AIE公司的基本信息和一般性的電子行業發展情況,展示了AIE公司可能的發展路徑和成就。實際上,AIE公司的發展歷程可能更加復雜和精彩,需要更深入的研究和了解才能揭示。
問題是這樣的,原來將NK.BIN燒到FLASH的首地址中 0x60000000 (FLASH的物理地址)可以正常啟動鏡像. 現在需要把NK往后一段,以保證不把原來燒在FLASH里EBOOT覆蓋掉,比如0x60080000 現在我修改了CONFIG.BIB,下載后通過超級終端看到了確實是燒在了0x6008 ...… 查看全部問答∨ |
|
大家好: 在我的程序里用了::TrackPopupMenu,程序編譯通過了,但連接時又出現如下錯誤: error LNK2019: 無法解析的外部符號 TrackPopupMenu。 我在.cpp文件中已經#include <winuser.h>,TrackPopupMenu就在wi ...… 查看全部問答∨ |
|
設計資源 培訓 開發板 精華推薦
- Hercules :安全MCU 初體驗
- 學知識,贏好禮|泰克半導體材料與器件測試技術電源特性篇!
- 深入東芝參考設計庫:夯實您的設計庫,讓您的設計更出彩
- 1月22日下午14:00Mouser攜手Maxim邀您觀看有獎直播:深入淺出可穿戴健康監測
- 有獎直播|羅徹斯特電子半導體全周期解決方案 助您應對供應鏈中斷和元器件停產的挑戰
- 答題抽獎:Mentor Tessent Automotive相關測試解決方案(獎品池還剩不少獎品喲)
- 國產芯4月:開啟ADC和DAC之旅,曬一曬你用過哪個段位的ADC/DAC~
- 2021 Digi‑Key KOL 視頻系列:新型智能曝光算法在人臉識別中的應用
- TI單芯片毫米波傳感器產品組合新品發布會,誠邀參與,預注冊贏好禮
- EEWORLD2018開年送禮,答題贏紅包