分享一款可兼容STM32F103C8T6的国产32位单片机MM32F103C8T6

MM32F103C8T6使用高性能的ARM CortexTM-M3 为内核的32 位微控制器,工作频率最高可达168MHZ,内置高速存储器,丰富的增强型I/O 端口和外设连接到外部总线。该产品系列工作电压为2.0V~ 5.5V,工作温度范围包含-40◦C~ +85◦C 常规型和-40◦C~+105◦C 扩展型。多种省电工作模式保证低功耗应用的要求。本产品提供LQFP100、LQFP64、LQFP48、LQFP32 和QFN32 共5 种封装形式;根据不同的封装形式,器件中的外设配置不尽相同。该产品器件完美兼容意法半导体MCU型号STM32F103C8T6。

产品图
在这里插入图片描述

应用范围
• 电机驱动和应用控制
• 医疗和手持设备
• PC 游戏外设和GPS 平台
• 工业应用:可编程控制器(PLC)、变频器、打印机和扫描仪
• 警报系统、视频对讲、和暖气通风空调系统等

产品特性
• 内核与系统
– 32 位ARM CortexTM-M3 处理器内核
– 标准工作频率可达96MHZ
– 最高工作频率可达168MHZ
• 存储器
– 高达512K 字节的闪存程序存储器
– 高达128K 字节的SRAM
• 时钟、复位和电源管理
– 2.0V ~ 5.5V 供电
– 上电/断电复位(POR/PDR)、可编程电压监测器(PVD)
– 外部2~ 24MHz 高速晶体振荡器
– 内嵌经出厂调校的48MHz 高速振荡器
– PLL 支持CPU 最高运行在168MHZ
– 外部32.768KHz 低速振荡器
• 低功耗
– 睡眠、停机和待机模式
– VBAT 为RTC 和后备寄存器供电
• 1 个12 位模数转换器,1μS 转换时间(多达7 个输入通道)
– 转换范围:0 ~ VDDA
– 支持采样时间和分辨率配置
– 片上温度传感器
– 片上电压传感器
• 2 个比较器
• 12 通道DMA 控制器
– 支持的外设:Timer、ADC、UART、I2C、SPI、USB 和SDIO
• 多达80 个快速I/O 端口:
– 所有I/O 口可以映像到16 个外部中断
– 所有端口均可输入输出5V 信号
• 调试模式
– 串行单线调试(SWD)和JTAG 接口
• 多达11 个定时器
– 2 个16 位4 通道高级控制定时器,有4 通道PWM 输出,以及死区生成和紧急停止功能
– 2 个16 位定时器和2 个32 位定时器,有高达4 个输入捕获/输出比较,可用于IR 控制解码
– 2 个16 位定时器,有1 个输入捕获/输出比较和1 个OCN,死区生成,紧急停止,调制器门电路用于IR 控制
– 2 个看门狗定时器(独立的和窗口型的)
– 系统时间定时器:24 位自减型计数器
• 多达16 个通信接口
– 8 个UART 接口
– 2 个I2C 接口
– 3 个SPI 接口
– 1 个CAN 接口
– 1 个USB device 接口
– 1 个SDIO 接口
• 96 位的芯片唯一ID(UID)
• 采用LQFP100、LQFP64、LQFP48、LQFP32 和QFN32 封装

下面是灵动mm32f103c8t6串口例程的代码: ```c #include "gd32f10x.h" #include "stdio.h" /* 定义串口1的GPIO引脚以及USART外设 */ #define USART_GPIO_PORT GPIOA #define USART_GPIO_CLK RCU_GPIOA #define USART_TX_PIN GPIO_PIN_9 #define USART_RX_PIN GPIO_PIN_10 #define USARTx USART1 #define USART_CLK RCU_USART1 /* 定义波特率为115200 */ #define USART_BAUDRATE 115200 int fputc(int ch, FILE *f); void usart1_init(void); int main(void) { /* 设置系统时钟为48MHz */ SystemInit(); /* 初始化串口 */ usart1_init(); while (1) { /* 向串口发送字符串 */ printf("Hello, world!\r\n"); delay_ms(1000); } return 0; } /** * @brief 串口1初始化函数 * @retval None */ void usart1_init(void) { /* 使能GPIO时钟 */ rcu_periph_clock_enable(USART_GPIO_CLK); /* 配置 USART1_TX 为推挽输出 */ gpio_init(USART_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, USART_TX_PIN); /* 配置 USART1_RX 为上拉输入 */ gpio_init(USART_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, USART_RX_PIN); /* 使能USART时钟 */ rcu_periph_clock_enable(USART_CLK); /* 配置USART参数:波特率115200、8数据位、1个停止位、无校验位 */ usart_deinit(USARTx); usart_baudrate_set(USARTx, USART_BAUDRATE); usart_word_length_set(USARTx, USART_WL_8BIT); usart_stop_bit_set(USARTx, USART_STB_1BIT); usart_parity_config(USARTx, USART_PM_NONE); usart_hardware_flow_rts_config(USARTx, USART_RTS_DISABLE); usart_hardware_flow_cts_config(USARTx, USART_CTS_DISABLE); usart_receive_config(USARTx, USART_RECEIVE_ENABLE); usart_transmit_config(USARTx, USART_TRANSMIT_ENABLE); /* 使能USART */ usart_enable(USARTx); } /** * @brief 重定向fputc函数 * @param[in] ch 输出字符 * @param[in] f 输出流 * @retval 输出字符 */ int fputc(int ch, FILE *f) { /* 等待发送缓冲区为空 */ while (!(USARTx->STAT & USART_STAT_TBE)); /* 将数据写入USART数据寄存器 */ usart_data_transmit(USARTx, (uint8_t)ch); return ch; } ``` 在这个例程中,我们使用USART1作为串口,将其连接到对应的GPIO引脚上。然后,通过调用usart1_init函数来初始化USART1,配置波特率、数据位、停止位、校验位等参数,并将USART1启用。 使用printf向串口发送数据时,我们可以通过重定向fputc函数来将输出从控制台移到USART1上。在实现fputc函数中,我们将输出数据写入USART数据寄存器,并在等待发送缓冲区为空之后再返回发送成功。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EVERSPIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值