本帖最后由 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, 下载次数: 6)
欢迎一起交流~~~~
|