本帖最后由 kai迪皮 于 2023-9-12 11:39 编辑
#申请原创# @21小跑堂
1 前言
最近拿到了极海的APM32F411 TINY 板卡,APM32F411是其新推出的新品,资源如下:
基于Arm® Cortex®-M4F内核,工作主频120MHz,具有高速运算能力、多种工作模式、以及丰富的高精度外设和通讯接口;内置CRC32运算单元,可为用户提供高集成度、高可靠性的SoC方案;作为APM32F4系列MCU的超值型拓展产品,能很好的满足用户对功耗、性能、性价比方面的产品均衡需求,可适用于电力,仪器仪表,工控,家电,物联网,新能源,智慧楼宇等广泛的应用领域。
更多内容可以看他们的官网:[APM32F411 (geehy.com)](https://geehy.com/apm32?id=81)
那话不多说,现在开始看看他们的板卡吧。
2 APM32F411 TINY板
板卡分为左右两个部分,右边是他们的板载仿真器,左边是他们的APM32F411芯片,外接的资源有1个Type-C(USB FS)、2个KEY、2个LED ,2个USART(与板载仿真器连接)。
3 板载仿真器连接电脑
使用Type-C线连接板载仿真器那边,可以看到设备管理器上多出了一个串口和“Geehy CMSIS-DAP WinUSB”设备。
这表明他们使用的板载仿真器是基于WinUSB的CMSIS-DAP固件,同时支持串口数据发送(好评!)。
4 板载串口及点灯Demo编写
由于有板载仿真器我们这不点个灯和串口打印一下?(#^.^#)。
我们去他们官网下载:https://geehy.com/uploads/tool/APM32F4xx_SDK_V1.4.zip
由于我想评估一下他们的LED,和串口功能。我这里选择串口1,进行一下验证,步骤如下:
1. 初始化串口1
2. 编写串口1接收中断及判断接收到回车进行发送。
为了方便,我直接在官方提供的“SysTick_TimeBase”上更改了(里面有LED的操作,不要多谢)。
串口初始化:
void USART1_Init(void)
{
GPIO_Config_T GPIO_configStruct;
USART_Config_T usartConfigStruct;
GPIO_ConfigStructInit(&GPIO_configStruct);
/* Enable GPIO clock */
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_USART1);
/* Connect PXx to USARTx_Tx */
GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_9, GPIO_AF_USART1);
/* Connect PXx to USARTx_Rx */
GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_10, GPIO_AF_USART1);
/* Configure USART Tx as alternate function push-pull */
GPIO_configStruct.mode = GPIO_MODE_AF;
GPIO_configStruct.pin = GPIO_PIN_9;
GPIO_configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOA, &GPIO_configStruct);
/* Configure USART Rx as input floating */
GPIO_configStruct.mode = GPIO_MODE_AF;
GPIO_configStruct.pin = GPIO_PIN_10;
GPIO_Config(GPIOA, &GPIO_configStruct);
/* USART configuration */
usartConfigStruct.baudRate = 115200;
usartConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
usartConfigStruct.mode = USART_MODE_TX_RX;
usartConfigStruct.parity = USART_PARITY_NONE;
usartConfigStruct.stopBits = USART_STOP_BIT_1;
usartConfigStruct.wordLength = USART_WORD_LEN_8B;
USART_Config(USART1, &usartConfigStruct);
USART_EnableInterrupt(USART1,USART_INT_RXBNE);
NVIC_EnableIRQRequest(USART1_IRQn,1,0);
/* Enable USART */
USART_Enable(USART1);
}
串口中断服务函数:
void USART1_Isr(void)
{
/* USART1 Recieve Data */
if(USART_ReadStatusFlag(USART1, USART_FLAG_RXBNE) == SET)
{
txrxDataBufUSART1[rxCountUSART1] = (uint8_t)USART_RxData(USART1);
rxCountUSART1++;
if((txrxDataBufUSART1[rxCountUSART1-1] == 0x0A)&&(txrxDataBufUSART1[rxCountUSART1-2] == 0x0D))
{
for(txCountUSART1 = 0;txCountUSART1 < rxCountUSART1;txCountUSART1++)
{
USART_TxData(USART1,txrxDataBufUSART1[txCountUSART1]);
/* wait for the data to be send */
while (USART_ReadStatusFlag(DEBUG_USART, USART_FLAG_TXBE) == RESET);
}
rxCountUSART1 = 0;
}
}
}
主函数:
int main(void)
{
USART1_Init();
APM_LEDInit(LED2);
APM_LEDInit(LED3);
printf("APM32F411 TINY Demo\r\n");
/* SysTick Initialization */
SysTick_Init();
while (1)
{
APM_LEDToggle(LED2);
/* Precise Delay 1ms */
SysTick_Delay_ms(1000);
APM_LEDToggle(LED3);
}
}
5 Demo下载
魔术棒选择仿真下载设置,选择:CMSIS-DAP Debugger
进一步设置如下:
然后编译程序后进行下载。
6 结果
程序下载至板卡后,板载的LED2/3交替闪烁,若此时已经打开串口助手会打印“APM32F411 TINY Demo”,使用串口助手发送数据(记得勾选“发送新行(Line by Line)”哦),会回复相同的数据。
代码在这里:
APM32F4xx_SDK_V1.4_APM32F411 TINY Demo.zip
(808.64 KB)
欢迎一起交流~~~~
|