本帖最后由 strang 于 2022-5-30 19:24 编辑
参加活动有幸得到一块Geehy APM32E103ZE MIIN 开发板,板子收到有一段时间了,由于好多事给耽误没来得及写测评
APM32E103xE工业级增强型系列MCU,产品基于32 位Arm® Cortex®-M3内核内核架构,在APM32F103xE系列上进行升级,运算频率可达120MHz,供电电压在2.0V~3.6V,其工作温度范围可覆盖-40℃~+105℃,帮助产品在工业级温度场景下稳定运行。芯片ESD等级达5KV,满足工业级高可靠性的产品性能标准需求。
详细介绍和资料下载请到官网:https://www.geehy.com/apm32?id=45
看坛友写了很多测评,我就测试一下USART2。
看了下数据手册,PA2和PA3默认复用功能作为USART2的发送端和接收引脚。
接线图:
初始化USART2:
USART2挂载APB1上
用官方提供的BSP包测试
- main.c文件:
- uint8_t txBuf[100] = "HELLO Geehy APM32E103ZE MIIN \r\n";
- /***************** USART2初始化 **********************/
- void USART2_InitFunc(void)
- {
- GPIO_Config_T GPIO_ConfigStruct;
- USART_Config_T USART_ConfigStruct;
- RCM_EnableAPB2PeriphClock((RCM_APB2_PERIPH_T)RCM_APB2_PERIPH_GPIOA );
- RCM_EnableAPB1PeriphClock((RCM_APB1_PERIPH_T)RCM_APB1_PERIPH_USART2);
- GPIO_ConfigStruct.mode = GPIO_MODE_AF_PP;
- GPIO_ConfigStruct.pin = GPIO_PIN_2;
- GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
- GPIO_Config(GPIOA, &GPIO_ConfigStruct);
- USART_ConfigStruct.baudRate = 115200;
- USART_ConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
- USART_ConfigStruct.mode = USART_MODE_TX;
- USART_ConfigStruct.parity = USART_PARITY_NONE;
- USART_ConfigStruct.stopBits = USART_STOP_BIT_1;
- USART_ConfigStruct.wordLength = USART_WORD_LEN_8B;
- USART_Config(USART2, &USART_ConfigStruct);
- USART_Enable(USART2);
- }
- /***************** 发送一个字节 **********************/
- void Usart_SendByte( USART_T * pUSARTx, uint8_t ch)
- {
- /* 发送一个字节数据到USART */
- USART_TxData(pUSARTx,ch);
-
- /* 等待发送数据寄存器为空 */
- while (USART_ReadStatusFlag(pUSARTx, USART_FLAG_TXBE) == RESET);
- }
- /***************** 发送字符串 **********************/
- void Usart_SendString( USART_T * pUSARTx, char *str)
- {
- unsigned int k=0;
- do
- {
- Usart_SendByte( pUSARTx, *(str + k) );
- k++;
- } while(*(str + k)!='\0');
-
- /* 等待发送完成 */
- while(USART_ReadStatusFlag(pUSARTx,USART_FLAG_TXC)==RESET)
- {}
- }
- /***************** 主函数 **********************/
- int main(void)
- {
- uint8_t i;
- APM_MINI_LEDInit(LED2);
- APM_MINI_LEDInit(LED3);
- USART2_InitFunc();
- TMR1_InitFunc();
- while(1)
- {
- if(tick>=500)
- {
- tick=0;
- APM_MINI_LEDToggle(LED2);
- APM_MINI_LEDToggle(LED3);
- Usart_SendString(USART2,(char*)txBuf);
- }
- }
- }
|