[APM32F4] APM32F411 TINY 初体验

[复制链接]
 楼主| kai迪皮 发表于 2023-9-12 11:38 | 显示全部楼层 |阅读模式
本帖最后由 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板

image-20230906154112383.png

板卡分为左右两个部分,右边是他们的板载仿真器,左边是他们的APM32F411芯片,外接的资源有1个Type-C(USB FS)、2个KEY、2个LED ,2个USART(与板载仿真器连接)。

3 板载仿真器连接电脑

使用Type-C线连接板载仿真器那边,可以看到设备管理器上多出了一个串口和“Geehy CMSIS-DAP WinUSB”设备。

image-20230906154543480.png

这表明他们使用的板载仿真器是基于WinUSB的CMSIS-DAP固件,同时支持串口数据发送(好评!)。

4 板载串口及点灯Demo编写

由于有板载仿真器我们这不点个灯和串口打印一下?(#^.^#)。

我们去他们官网下载:https://geehy.com/uploads/tool/APM32F4xx_SDK_V1.4.zip

由于我想评估一下他们的LED,和串口功能。我这里选择串口1,进行一下验证,步骤如下:

1. 初始化串口1
2. 编写串口1接收中断及判断接收到回车进行发送。

为了方便,我直接在官方提供的“SysTick_TimeBase”上更改了(里面有LED的操作,不要多谢)。

串口初始化:
  1. void USART1_Init(void)
  2. {
  3.     GPIO_Config_T GPIO_configStruct;
  4.     USART_Config_T usartConfigStruct;
  5.    
  6.     GPIO_ConfigStructInit(&GPIO_configStruct);

  7.     /* Enable GPIO clock */
  8.     RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);

  9.     RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_USART1);

  10.     /* Connect PXx to USARTx_Tx */
  11.     GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_9, GPIO_AF_USART1);

  12.     /* Connect PXx to USARTx_Rx */
  13.     GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_10, GPIO_AF_USART1);

  14.     /* Configure USART Tx as alternate function push-pull */
  15.     GPIO_configStruct.mode = GPIO_MODE_AF;
  16.     GPIO_configStruct.pin = GPIO_PIN_9;
  17.     GPIO_configStruct.speed = GPIO_SPEED_50MHz;
  18.     GPIO_Config(GPIOA, &GPIO_configStruct);

  19.     /* Configure USART Rx as input floating */
  20.     GPIO_configStruct.mode = GPIO_MODE_AF;
  21.     GPIO_configStruct.pin = GPIO_PIN_10;
  22.     GPIO_Config(GPIOA, &GPIO_configStruct);

  23.     /* USART configuration */
  24.     usartConfigStruct.baudRate = 115200;
  25.     usartConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
  26.     usartConfigStruct.mode = USART_MODE_TX_RX;
  27.     usartConfigStruct.parity = USART_PARITY_NONE;
  28.     usartConfigStruct.stopBits = USART_STOP_BIT_1;
  29.     usartConfigStruct.wordLength = USART_WORD_LEN_8B;

  30.     USART_Config(USART1, &usartConfigStruct);

  31.     USART_EnableInterrupt(USART1,USART_INT_RXBNE);
  32.    
  33.     NVIC_EnableIRQRequest(USART1_IRQn,1,0);

  34.     /* Enable USART */
  35.     USART_Enable(USART1);
  36. }

串口中断服务函数:

  1. void USART1_Isr(void)
  2. {
  3.     /* USART1 Recieve Data */
  4.     if(USART_ReadStatusFlag(USART1, USART_FLAG_RXBNE) == SET)
  5.     {
  6.         txrxDataBufUSART1[rxCountUSART1] = (uint8_t)USART_RxData(USART1);

  7.         rxCountUSART1++;

  8.         if((txrxDataBufUSART1[rxCountUSART1-1] == 0x0A)&&(txrxDataBufUSART1[rxCountUSART1-2] == 0x0D))
  9.         {
  10.             for(txCountUSART1 = 0;txCountUSART1 < rxCountUSART1;txCountUSART1++)
  11.             {
  12.                 USART_TxData(USART1,txrxDataBufUSART1[txCountUSART1]);

  13.                 /* wait for the data to be send */
  14.                 while (USART_ReadStatusFlag(DEBUG_USART, USART_FLAG_TXBE) == RESET);
  15.             }

  16.             rxCountUSART1 = 0;
  17.         }
  18.     }
  19. }

主函数:

  1. int main(void)
  2. {
  3.     USART1_Init();

  4.     APM_LEDInit(LED2);
  5.     APM_LEDInit(LED3);

  6.     printf("APM32F411 TINY Demo\r\n");

  7.     /* SysTick Initialization */
  8.     SysTick_Init();

  9.     while (1)
  10.     {
  11.         APM_LEDToggle(LED2);
  12.         /* Precise Delay 1ms */
  13.         SysTick_Delay_ms(1000);
  14.         APM_LEDToggle(LED3);
  15.     }
  16. }


5 Demo下载


魔术棒选择仿真下载设置,选择:CMSIS-DAP Debugger

image-20230906164800833.png

进一步设置如下:

image-20230906164724242.png

然后编译程序后进行下载。

6 结果

程序下载至板卡后,板载的LED2/3交替闪烁,若此时已经打开串口助手会打印“APM32F411 TINY Demo”,使用串口助手发送数据(记得勾选“发送新行(Line by Line)”哦),会回复相同的数据。

image-20230906165148057.png

代码在这里: APM32F4xx_SDK_V1.4_APM32F411 TINY Demo.zip (808.64 KB, 下载次数: 6)

欢迎一起交流~~~~

qiangtech 发表于 2023-9-12 14:05 | 显示全部楼层
前面拿到的407 TINY板载的DAP LINK还没有串口,不知道哪里可以升级一下。
qiangtech 发表于 2023-9-12 14:05 | 显示全部楼层
前面拿到的407 TINY板载的DAP LINK还没有串口,不知道哪里可以升级一下。

评论

411 的板卡上是支持的,你可以申请看看  发表于 2023-9-15 10:30
21小跑堂 发表于 2023-9-15 10:53 | 显示全部楼层
hi 大佬,可以详细补充下文化在哪个的内容描述噢,目前文章字数还没达到审核原创的标准

评论

好的,谢谢小跑堂的提醒,我下一篇注意一下。(#^.^#)  发表于 2023-9-15 16:35
tpgf 发表于 2023-10-11 13:14 | 显示全部楼层
现在的内核区分的如此之细的原因是什么呢
qcliu 发表于 2023-10-11 15:25 | 显示全部楼层
qiangtech 发表于 2023-9-12 14:05
前面拿到的407 TINY板载的DAP LINK还没有串口,不知道哪里可以升级一下。

可以考虑自己飞线接出来一个串口
drer 发表于 2023-10-11 16:01 | 显示全部楼层
通过串口下载程序的话 可以下载哪种类型的文件呢
coshi 发表于 2023-10-11 16:41 | 显示全部楼层
板载仿真器需要有类似于单片机的主控芯片吗
kxsi 发表于 2023-10-11 17:00 | 显示全部楼层
coshi 发表于 2023-10-11 16:41
板载仿真器需要有类似于单片机的主控芯片吗

应该不需要吧 要是需要的话 那第一个芯片的程序是如何写入的呢
wiba 发表于 2023-10-11 17:40 | 显示全部楼层
kxsi 发表于 2023-10-11 17:00
应该不需要吧 要是需要的话 那第一个芯片的程序是如何写入的呢

最一开始的老单片机根本就不是通过这种方式下载程序的

评论

老单片机应该是用ISP方式进行下载的。  发表于 2023-10-12 09:44
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

292

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部