Timer experiments WIP
This commit is contained in:
parent
b9059658c4
commit
6af143dd8f
2 changed files with 26 additions and 5 deletions
|
|
@ -25,6 +25,7 @@
|
||||||
#define CLEAR(pin) (~(3<<(2*(pin))))
|
#define CLEAR(pin) (~(3<<(2*(pin))))
|
||||||
#define PULLUP(pin) (1<<(2*pin))
|
#define PULLUP(pin) (1<<(2*pin))
|
||||||
#define PULLDOWN(pin) (2<<(2*pin))
|
#define PULLDOWN(pin) (2<<(2*pin))
|
||||||
|
#define OSPEED(pin, val) ((val) << ((pin)*2))
|
||||||
#define BSRR_CLEAR(pin) ((1<<pin)<<16)
|
#define BSRR_CLEAR(pin) ((1<<pin)<<16)
|
||||||
#define BSRR_SET(pin) (1<<pin)
|
#define BSRR_SET(pin) (1<<pin)
|
||||||
#define BSRR_VALUE(pin, value) ((((!(value))<<pin)<<16) | ((!!(value))<<pin))
|
#define BSRR_VALUE(pin, value) ((((!(value))<<pin)<<16) | ((!!(value))<<pin))
|
||||||
|
|
|
||||||
30
src/main.c
30
src/main.c
|
|
@ -11,7 +11,6 @@ int main(void) {
|
||||||
* HSE @ 8 MHz --[PLL x42 /2]--> PLL "R" clock @ 168 MHz
|
* HSE @ 8 MHz --[PLL x42 /2]--> PLL "R" clock @ 168 MHz
|
||||||
*/
|
*/
|
||||||
/* Enable peripherals */
|
/* Enable peripherals */
|
||||||
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN;
|
|
||||||
RCC->APB1ENR1 |= RCC_APB1ENR1_PWREN;
|
RCC->APB1ENR1 |= RCC_APB1ENR1_PWREN;
|
||||||
/* Enable High-speed external crystal oscillator. The board has an 8 MHz crystal. */
|
/* Enable High-speed external crystal oscillator. The board has an 8 MHz crystal. */
|
||||||
RCC->CR |= RCC_CR_HSEON;
|
RCC->CR |= RCC_CR_HSEON;
|
||||||
|
|
@ -37,16 +36,37 @@ int main(void) {
|
||||||
/* wait for RCC to switch over. */
|
/* wait for RCC to switch over. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN | RCC_AHB2ENR_GPIOBEN;
|
||||||
|
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
|
||||||
|
GPIOA->MODER &= CLEAR(8) & CLEAR(9);
|
||||||
|
GPIOA->MODER |= AF(8) | AF(9);
|
||||||
|
GPIOA->AFR[1] |= AFRH(8, 6) | AFRH(9, 6);
|
||||||
|
GPIOA->OSPEEDR |= OSPEED(8, 3) | OSPEED(9, 3);
|
||||||
|
GPIOB->MODER &= CLEAR(13) & CLEAR(14);
|
||||||
|
GPIOB->MODER |= AF(13) | AF(14);
|
||||||
|
GPIOB->AFR[1] |= AFRH(13, 6) | AFRH(14, 6);
|
||||||
|
GPIOB->OSPEEDR |= OSPEED(13, 3) | OSPEED(14, 3);
|
||||||
|
TIM1->CCMR1 = (6<<TIM_CCMR1_OC1M_Pos) | (7<<TIM_CCMR1_OC2M_Pos);
|
||||||
|
TIM1->CCER = TIM_CCER_CC1E | TIM_CCER_CC1NE | TIM_CCER_CC2E | TIM_CCER_CC2NE;
|
||||||
|
TIM1->PSC = 0;
|
||||||
|
TIM1->ARR = 168*3;
|
||||||
|
TIM1->CCR1 = TIM1->ARR/2;
|
||||||
|
TIM1->CCR2 = TIM1->ARR/2;
|
||||||
|
TIM1->BDTR = TIM_BDTR_MOE | (64<<TIM_BDTR_DTG_Pos);
|
||||||
|
TIM1->CR1 = TIM_CR1_CEN;
|
||||||
|
|
||||||
|
//GPIOA->MODER |= OUT(8) | OUT(9);
|
||||||
|
//GPIOB->MODER |= OUT(13) | OUT(14);
|
||||||
|
|
||||||
GPIOA->MODER &= CLEAR(5) & CLEAR(6) & CLEAR(7);
|
GPIOA->MODER &= CLEAR(5) & CLEAR(6) & CLEAR(7);
|
||||||
GPIOA->MODER |= OUT(5) | OUT(6) | OUT(7); /* Status LEDs */
|
GPIOA->MODER |= OUT(5) | OUT(6) | OUT(7); /* Status LEDs */
|
||||||
|
GPIOA->BSRR = (1<<6);
|
||||||
|
|
||||||
int j = 0;
|
int j = 0;
|
||||||
while(23) {
|
while(23) {
|
||||||
j++;
|
j++;
|
||||||
if (j == 3)
|
GPIOA->BSRR = ((j&1)<<5) | ((1<<5)<<16);
|
||||||
j = 0;
|
for(int i=0; i<2000000; i++) {
|
||||||
GPIOA->BSRR = (((1<<5) | (1<<6) | (1<<7)) << 16) | ((~((1<<5) << j))&((1<<5)|(1<<6)|(1<<7)));
|
|
||||||
for(int i=0; i<5000000; i++) {
|
|
||||||
asm volatile ("nop");
|
asm volatile ("nop");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue