不韋 呂 / UITDSP_ADDA2

Dependents:   UITDSP_ADDA_Example2

Committer:
MikamiUitOpen
Date:
Sat Mar 14 06:49:49 2015 +0000
Revision:
0:46d099dfd9d6
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:46d099dfd9d6 1 //------------------------------------------------------
MikamiUitOpen 0:46d099dfd9d6 2 // Class for generate SPI slave select using TIM4
MikamiUitOpen 0:46d099dfd9d6 3 //
MikamiUitOpen 0:46d099dfd9d6 4 // Default pin assignments: PB_6 (D10)
MikamiUitOpen 0:46d099dfd9d6 5 // PB_7, PB_8 (D15), and PB_9 (D14) also can be used
MikamiUitOpen 0:46d099dfd9d6 6 // 2014/12/21, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:46d099dfd9d6 7 //------------------------------------------------------
MikamiUitOpen 0:46d099dfd9d6 8
MikamiUitOpen 0:46d099dfd9d6 9 #ifndef TIM4_SLAVESELECT_HPP
MikamiUitOpen 0:46d099dfd9d6 10 #define TIM4_SLAVESELECT_HPP
MikamiUitOpen 0:46d099dfd9d6 11
MikamiUitOpen 0:46d099dfd9d6 12 #include "mbed.h"
MikamiUitOpen 0:46d099dfd9d6 13
MikamiUitOpen 0:46d099dfd9d6 14 namespace Mikami
MikamiUitOpen 0:46d099dfd9d6 15 {
MikamiUitOpen 0:46d099dfd9d6 16 class Tim4_ss
MikamiUitOpen 0:46d099dfd9d6 17 {
MikamiUitOpen 0:46d099dfd9d6 18 public:
MikamiUitOpen 0:46d099dfd9d6 19 Tim4_ss(uint16_t psc, // prescaler
MikamiUitOpen 0:46d099dfd9d6 20 uint16_t arr = 18, // auto-reload register
MikamiUitOpen 0:46d099dfd9d6 21 PinName pin = PB_6) // pin name
MikamiUitOpen 0:46d099dfd9d6 22 : myTim_(TIM4)
MikamiUitOpen 0:46d099dfd9d6 23 {
MikamiUitOpen 0:46d099dfd9d6 24 PwmOut css(pin);
MikamiUitOpen 0:46d099dfd9d6 25 myTim_->CR1 |= TIM_CR1_OPM; // one-pulse mode
MikamiUitOpen 0:46d099dfd9d6 26 myTim_->PSC = psc; // prescaler
MikamiUitOpen 0:46d099dfd9d6 27 myTim_->ARR = arr; // pulse width
MikamiUitOpen 0:46d099dfd9d6 28 if (pin == PB_6) myTim_->CCR1 = 1;
MikamiUitOpen 0:46d099dfd9d6 29 if (pin == PB_7) myTim_->CCR2 = 1;
MikamiUitOpen 0:46d099dfd9d6 30 if (pin == PB_8) myTim_->CCR3 = 1;
MikamiUitOpen 0:46d099dfd9d6 31 if (pin == PB_9) myTim_->CCR4 = 1;
MikamiUitOpen 0:46d099dfd9d6 32 if ( (pin != PB_6) && (pin != PB_7)
MikamiUitOpen 0:46d099dfd9d6 33 &&(pin != PB_8) && (pin != PB_9) )
MikamiUitOpen 0:46d099dfd9d6 34 {
MikamiUitOpen 0:46d099dfd9d6 35 fprintf(stderr, "\r\nIllegal pin name in Tim4_ss class\r\n");
MikamiUitOpen 0:46d099dfd9d6 36 while (true) {}
MikamiUitOpen 0:46d099dfd9d6 37 }
MikamiUitOpen 0:46d099dfd9d6 38 }
MikamiUitOpen 0:46d099dfd9d6 39 // Generate slave select
MikamiUitOpen 0:46d099dfd9d6 40 void SlaveSelect()
MikamiUitOpen 0:46d099dfd9d6 41 {
MikamiUitOpen 0:46d099dfd9d6 42 myTim_->CNT = 0; // Set counter 0
MikamiUitOpen 0:46d099dfd9d6 43 myTim_->CR1 |= TIM_CR1_CEN; // Enable TIM4
MikamiUitOpen 0:46d099dfd9d6 44 __NOP();
MikamiUitOpen 0:46d099dfd9d6 45 __NOP();
MikamiUitOpen 0:46d099dfd9d6 46 __NOP();
MikamiUitOpen 0:46d099dfd9d6 47 __NOP();
MikamiUitOpen 0:46d099dfd9d6 48 #ifdef __STM32F411xE_H
MikamiUitOpen 0:46d099dfd9d6 49 __NOP();
MikamiUitOpen 0:46d099dfd9d6 50 __NOP();
MikamiUitOpen 0:46d099dfd9d6 51 #endif // __STM32F411xE_H
MikamiUitOpen 0:46d099dfd9d6 52 }
MikamiUitOpen 0:46d099dfd9d6 53 private:
MikamiUitOpen 0:46d099dfd9d6 54 TIM_TypeDef* myTim_;
MikamiUitOpen 0:46d099dfd9d6 55
MikamiUitOpen 0:46d099dfd9d6 56 // Forbid to use copy constructor
MikamiUitOpen 0:46d099dfd9d6 57 Tim4_ss(const Tim4_ss&);
MikamiUitOpen 0:46d099dfd9d6 58 // Forbid to use substitution operator
MikamiUitOpen 0:46d099dfd9d6 59 Tim4_ss operator=(const Tim4_ss&);
MikamiUitOpen 0:46d099dfd9d6 60 };
MikamiUitOpen 0:46d099dfd9d6 61 }
MikamiUitOpen 0:46d099dfd9d6 62 #endif // TIM4_SLAVESELECT_HPP