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

为何STM8S channel 4 没有PWM输出

[复制链接]
hw2017 提问时间:2017-10-27 18:17 /
求助各路大虾,我在STM8S的评估板上准备实现PWM控制LED的亮暗,LED是接在PD7管脚上,采用TIM1 channel 4 输出PWM,可是怎么也出不来效果。请教是哪里出了问题,下面是我的设置。还有一个,在STVD编译环境下跟踪寄存器,发现TIM1_CCR寄存器竟然是“intrusive read”, 单步执行写CCR,根本就写不进去,青椒大虾们为什么CCR寄存器会标注"intrusive read"?多谢大虾们。

//use TIM1 PWM to control LED
//set system clock
CLK->PCKENR1 = 0x80;
CLK->CMSR = 0xE1;          //choose CLK HSI = 16Mhz as fMASTER.
CLK->CKDIVR = 0x00;         //set fHSI= fHSI RC output/8 = 16Mhz/1 = 16MHz
                   //Becasue CPUDIV no any devide, so fMASTER = fHSI = 16Mhz
//----------------------------


//init TIM1 base unit
//----------------------------
TIM1->PSCRH = 0x00;
TIM1->PSCRL = 0x00;         //fCONT = fHSI = 16Mhz
//set PWM freq
TIM1->ARRH = 0x00;
TIM1->ARRL = 0x7f;          //PWM freq= 16Mhz/(0x7f+1)=16Mhz/128=15625Hz
TIM1->CR1 = 0x00;
TIM1->RCR = 0x00;          //no repeat count;

//set TIM1_CH4     
//----------------------------
TIM1->CCER2 = 0x10;        //CC4E(bit4)=1: OC4 output enable
                                         //CC4P(bit5)=0: high level is active;
TIM1->CCMR4 = 0x60;          //set channel 4 as PWM mode1, preload is disable
TIM1->OISR = TIM1->OISR | 0xbf;    //bit6(OIS4)=0, Output idle state is 0;
//initialize PWM duty circle
TIM1->CCR4H = 0x00;
TIM1->CCR4L = 0x00;         //PWM duty circle = CCR4/(ARR+1)*100%
TIM1->IER = 0x00;          //disable interrupt;

TIM1->CR2 = 0x00;

TIM1->CR1 = TIM1->CR1 |0x01;     //start count.
TIM1->BKR = 0x80;          //enable;

收藏 评论2 发布时间:2017-10-27 18:17

举报

2个回答
ughbss 回答时间:2017-10-28 18:37:38
什么型号?
hw2017 回答时间:2017-10-30 08:44:28
STM8S903K3,,谢谢大虾
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版