ME32F103系列整合了高性能Arm Cortex-M3 32位RISC内核,工作频率最高达100 MHz,闪存高达128 KB,30MHz;SRAM高达16 KB外设功能强大;本人很荣幸获得面包板社区提供敏矽微ME32F103 Demokit使用。以下是分析使用的过程。
  1、先晒下拿到板子图片
IMG_20241015_204556.jpg
2、搭建工程,
硬件:主要是使用板的CH340串口与芯片的PA2和PA3相连
2.1、开发环境使用Keil 5.31版本,下载器使用ULINK2
2.2、工程文件说明,如图
1729431466673.png
搭建工程详细步骤就不说了,不懂百度以下,一大堆,嘿嘿,工程如下图

1729431728688.png
3、串口驱动源文件与头文件
  1. /*******************************************************************
  2. ** Header:bsp_uart.c
  3. ** File describtion:
  4. ** Author:pandy
  5. ** Date:2024-10-20
  6. *******************************************************************/
  7. #include "Bsp_uart.h"

  8. //中断服务函数
  9. void UART1_IRQHandler(void)
  10. {
  11.         if ( UART1 -> LSR_b.RDR )
  12.         {
  13.                 if( ( UART1 -> LSR_b.THRE ) )
  14.                 UART1 -> THR = UART1 -> RBR;
  15.         }       
  16. }

  17. //串口初始化
  18. void UART1_Init(void)
  19. {
  20.         //init UART pin
  21.         PA2_INIT( PA2_UART1_TX );
  22.         PA3_INIT( PA3_UART1_RX );
  23.         //initial UART1
  24.         UART_Open( UART1, UART_BAUD_RATE,UART_NO_PARITY, UART_TRIGGER_LEVEL_1_BYTE, UART_ONE_STOP_BIT );
  25.         UART_EnableInt( UART1, UART_RX_INT );//使能接受中断
  26.         NVIC_EnableIRQ( UART1_IRQn );
  27.     retarget_uart = UART1;       
  28. }

  1. #ifndef __BSP_UART__H_
  2. #define __BSP_UART__H_
  3. #include "me32f103_uart.h"
  4. #include "me32f103_gpio.h"
  5. #include "me32f103_ioconfig.h"

  6. #define UART_BAUD_RATE 115200
  7. extern UART0_Type * retarget_uart;
  8. extern void UART1_Init(void);

  9. #endif

4、定时器的源文件与头文件
  1. #ifndef __BSP_TIME__H_
  2. #define __BSP_TIME__H_
  3. #include "me32f103_timer.h"

  4. #define TIME_IS_1MS 1000

  5. typedef struct{
  6.         uint32_t time_10ms_cnt;
  7.         uint32_t time_1s_cnt;
  8. }timeContrl;
  9. extern timeContrl TimeIs;
  10. extern void TIME0_Init(void);
  11. extern void delay_ms( uint32_t cnt);
  12. #endif
  1. #ifndef __BSP_TIME__H_
  2. #define __BSP_TIME__H_
  3. #include "me32f103_timer.h"

  4. #define TIME_IS_1MS 1000

  5. typedef struct{
  6.         uint32_t time_10ms_cnt;
  7.         uint32_t time_1s_cnt;
  8. }timeContrl;
  9. extern timeContrl TimeIs;
  10. extern void TIME0_Init(void);
  11. extern void delay_ms( uint32_t cnt);
  12. #endif

5、main文件
  1. /*******************************************************************
  2. ** Header: main.c
  3. ** File describtion: Experiment with ADC and UART.
  4. ** Author:pandy
  5. ** Date:2024-10-20
  6. **Thanks to Mesilicon and the mbb.eet community for sponsoring
  7. the ME32F103 Demokit for my use and support.
  8. *******************************************************************/
  9. #include "main.h"
  10. void system_init(void)
  11. {
  12.         SYSCON->CLKBYPASSEN =0x3; //CPU work at 30MHz
  13.         SystemCoreClockUpdate();
  14.         delay_ms(500);
  15.         UART1_Init();
  16.         TIME0_Init();       
  17. }
  18. void logMessages(void)
  19. {
  20.         printf("pandy\n");
  21.         printf("2024-10-20\n");
  22.     printf("Thanks to mbb.eet!\n");
  23.         printf("Welcome to ME32F103 Demokit!\n");

  24. }

  25. //主函数
  26. int main(void)
  27. {
  28.         system_init();
  29.         logMessages();
  30.         while(1)
  31.         {
  32.          printf("Welcome to ME32F103 Demokit!\n");
  33.          delay_ms(500);                       
  34.         }
  35. }
  1. #ifndef __MAIN__H_
  2. #define __MAIN__H_

  3. #include "me32f103.h"
  4. #include "stdio.h"
  5. #include "me32f103_sys.h"
  6. #include "me32f103.h"
  7. #include "Bsp_time.h"
  8. #include "Bsp_uart.h"
  9. #endif
在调试过程中,发现官方提供的demo配置主时钟存在配置不成功的问题,并且写的代码不够规范,对新手不说很好。
上调试完成的效果如下图:
1729432988123.png
1729432649645.png

1729432538087.png
由于时间比较匆忙,今天UART分享到这来啦!!后续还得把开发板的排针焊上去才好调其它功能!