TA的每日心情 | 奋斗 昨天 11:10 |
---|
签到天数: 592 天 连续签到: 5 天 [LV.9]以坛为家II
|
本次主要是基于灵动微电子Motor-DK电机控制板搭建开发环境并点灯测试。
以下测试使用keil软件,首先要安装keil的MCU pack包。然后参照例程初始化LED和按键KEY的gpio,顺便初始化串口,方便数据调试输出。
创建模板工程如下:
根据板子原理图得知LED是PB9,KEY1是PB8端口。
下面初始化PB8和PB9端口。
- void PLATFORM_InitGPIO(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
-
- //LED = PB9
- GPIO_StructInit(&GPIO_InitStruct);
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStruct);
- //KEY1 = PB8
- GPIO_StructInit(&GPIO_InitStruct);
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(GPIOB, &GPIO_InitStruct);
- }
复制代码 初始化串口,串口是用PA11和PA12端口:
- void PLATFORM_InitConsole(uint32_t Baudrate)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- USART_InitTypeDef USART_InitStruct;
-
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_5);
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_5);
- GPIO_StructInit(&GPIO_InitStruct);
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_Init(GPIOA, &GPIO_InitStruct);
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART1, ENABLE);
- USART_StructInit(&USART_InitStruct);
- USART_InitStruct.USART_BaudRate = Baudrate;
- USART_InitStruct.USART_WordLength = USART_WordLength_8b;
- USART_InitStruct.USART_StopBits = USART_StopBits_1;
- USART_InitStruct.USART_Parity = USART_Parity_No;
- USART_InitStruct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;
- USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
- USART_Init(USART1, &USART_InitStruct);
- USART_Cmd(USART1, ENABLE);
- }
复制代码 下面映射printf输出:
- int fputc(int ch, FILE *f)
- {
- USART_SendData(USART1, (uint8_t)ch);
- while (RESET == USART_GetFlagStatus(USART1, USART_FLAG_TC))
- {
- }
- return (ch);
- }
复制代码 main测试点灯和按键:
- int main(void)
- {
- PLATFORM_Init();
- printf("Demo Test %s", __FUNCTION__);
- while (1)
- {
- PLATFORM_DelayMS(10);
- if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == 0)
- {
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- printf("KeyPress.\r\n");
- }else
- {
- GPIO_SetBits(GPIOB, GPIO_Pin_9);
- PLATFORM_DelayMS(100);
- GPIO_ResetBits(GPIOB, GPIO_Pin_9);
- PLATFORM_DelayMS(100);
- }
- }
- }
复制代码 编译下载代码,我们就可以看到led闪烁了,注意led焊反了要处理下。
按下按键led常亮。
代码模板如下:
MM32-GPIO.zip
(559.33 KB, 下载次数: 0)
|
|