极海的SDK里有这个一个程序:
代码为:
- #include "main.h"
- #include "Board.h"
- /* Private includes *******************************************************/
- /* Private macro **********************************************************/
- /* printf function configs to USART2*/
- #define DEBUG_USART USART2
- #define DIV 167
- /* Private typedef ********************************************************/
- /* Private variables ******************************************************/
- uint16_t encoderNum = 0;
- volatile uint32_t tick = 0;
- /* Private function prototypes ********************************************/
- /* External variables *****************************************************/
- /* External functions *****************************************************/
- /*!
- * [url=home.php?mod=space&uid=247401]@brief[/url] Main program
- *
- * @param None
- *
- * @retval None
- */
- int main(void)
- {
- GPIO_Config_T gpioConfig;
- USART_Config_T usartConfig;
- TMR_BaseConfig_T baseConfig;
- TMR_ICConfig_T ICConfig;
- BOARD_LEDInit(LED2);
- BOARD_LEDOff(LED2);
- /* USART2 Tx PA2 Rx PA3 */
- usartConfig.baudRate = 115200;
- usartConfig.mode = USART_MODE_TX_RX;
- usartConfig.hardwareFlow = USART_HARDWARE_FLOW_NONE;
- usartConfig.parity = USART_PARITY_NONE;
- usartConfig.stopBits = USART_STOP_BIT_1;
- usartConfig.wordLength = USART_WORD_LEN_8B;
- BOARD_COMInit(COM2,&usartConfig);
- /* Enable GPIOA Periph Clock */
- RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);
- /* Config GPIO */
- gpioConfig.pin = GPIO_PIN_8 | GPIO_PIN_9;
- gpioConfig.mode = GPIO_MODE_AF;
- gpioConfig.speed = GPIO_SPEED_100MHz;
- gpioConfig.otype = GPIO_OTYPE_OD;
- gpioConfig.pupd = GPIO_PUPD_UP;
- GPIO_Config(GPIOA,&gpioConfig);
- /* Config GPIOA Alernate Function for TMR1 */
- GPIO_ConfigPinAF(GPIOA,GPIO_PIN_SOURCE_8,GPIO_AF_TMR1);
- GPIO_ConfigPinAF(GPIOA,GPIO_PIN_SOURCE_9,GPIO_AF_TMR1);
- /* Enable TMR1,TMR2 Periph Clock */
- RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_TMR1);
- RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR2);
- /* Config TMR1 */
- baseConfig.clockDivision = TMR_CLOCK_DIV_1;
- baseConfig.countMode = TMR_COUNTER_MODE_UP;
- baseConfig.division = DIV;
- baseConfig.period = 0x0008;
- baseConfig.repetitionCounter = 0;
- TMR_ConfigTimeBase(TMR1, &baseConfig);
- /* Config TMR2 */
- baseConfig.clockDivision = TMR_CLOCK_DIV_1;
- baseConfig.countMode = TMR_COUNTER_MODE_UP;
- baseConfig.division = DIV;
- baseConfig.period = 999;
- baseConfig.repetitionCounter = 0;
- TMR_ConfigTimeBase(TMR2, &baseConfig);
- /* Encoder */
- TMR_ConfigEncodeInterface(TMR1,TMR_ENCODER_MODE_TI1,TMR_IC_POLARITY_RISING,TMR_IC_POLARITY_RISING);
- /* Input Capture */
- ICConfig.channel = TMR_CHANNEL_1;
- ICConfig.polarity = TMR_IC_POLARITY_RISING;
- ICConfig.selection = TMR_IC_SELECTION_DIRECT_TI;
- ICConfig.prescaler = TMR_IC_PSC_1;
- ICConfig.filter = 0;
- TMR_ConfigIC(TMR1,&ICConfig);
- ICConfig.channel = TMR_CHANNEL_2;
- TMR_ConfigIC(TMR1,&ICConfig);
-
- /* Counter */
- TMR_ConfigCounter(TMR1,0x0004);
- TMR_ClearStatusFlag(TMR1,TMR_FLAG_UPDATE);
- TMR_ClearStatusFlag(TMR2,TMR_FLAG_UPDATE);
- /* Enable TMR1,TMR2 Interrupt */
- TMR_EnableInterrupt(TMR1, TMR_INT_UPDATE);
- TMR_EnableInterrupt(TMR2, TMR_INT_UPDATE);
- NVIC_EnableIRQRequest(TMR1_UP_TMR10_IRQn, 0, 0);
- NVIC_EnableIRQRequest(TMR2_IRQn, 0, 0);
- /* Enable TMR1,TMR2 */
- TMR_Enable(TMR1);
- TMR_Enable(TMR2);
- while(1)
- {
- BOARD_LEDToggle(LED2);
- Delay();
- }
- }
可是查数据手册:
这PA8,PA9哪个是编码器功能?谢谢
|