0
STM32F103C8T6でTIM6を使用してLEDを点滅させようとしていますが、タイマーが動作していないとわかります。使用できるように初期化する必要があるパラメータタイマー?下のコードですか?そう失敗する運命にあるTIM6を使用しようと、TIM4 -TIM6、基本時間生成関数が動作しない
#include "stm32f10x.h"
int main(void)
{
RCC->APB1ENR |= 0x00000010 ; // CLOCK SIGNAL TO BASIC TIMER 6 IS INITIALIZED
RCC->APB2ENR |= 0x00000004 ; //CLOCK SIGNAL TO GPIO PORT A IS INITIALIZED
GPIOA->CRL |= 0x33333333 ; // LOWER PINS OF GPIO PORT A ARE DEFINED AS PUSH AND PULL OUTPUT
TIM6->CR1 |= 0x0081 ; // COUNTER AND AUTO RELOAD BUFFER ENABLED
TIM6->PSC |= 0x1F40 ; // PRESCALER SET AS 8000
TIM6->ARR |= 0x05DC ; // AUTO RELOAD REGISTER SET AT 1000
while(1)
{
if (TIM6->CNT == 1000)
{
GPIOA->BSRR |= 0X0044 ; //SET PINS 2 AND 6 OF GPIOA TO HIGH
}
if (TIM6->CNT == 0x05DC)
{
GPIOA->BRR |= 0X0044 ; //SET PINS 2 AND 6 OF GPIOA TO HIGH
}
}
}
タイマー値と等しいかどうかのテストは悪い考えです。 '> = '比較を使用してください。タイマーが非常にゆっくりと実行されていない限り、タイマーが正確な値になっているときに比較を実行する可能性は低いです。 –
私はちょうどそれを訂正しましたが、まだ動作していません..... –
デバッガ、ブレークポイントにタイマのレジスタが表示され、タイマがカウントアップしているかどうかを確認できますか?それが正しく初期化されているかどうかがわかります。 –