复旦微FM33LG025单片机PWM信号输出

        最近项目用到了复旦微的FM33LG025单片机,这是我第一次使用复旦微单片机,以下通过一个输出PWM信号的工程为例,码点文字记录一下学习过程和遇到的坑。

1、新建工程

       复旦微提供了一个线上的芯片应用、配置工具——MFang,读作“魔方”。使用MFang不需要下载和安装,更不需要破解和激活,打开浏览器即可在线操作所有数据实时云端存储。这个工具跟ST的STM32CubeMX类似,只不过MFang是网页版,STM32CubeMX是安装版。

       废话不多说,我们进入实操环节。

       首先打开MFang,链接如下:https://mfang2.fmdevelopers.com.cn/

       进入工作区,如下图所示:

        点击“新建”→“新建工程”创建一个新工程,注意芯片型号要选对,FL驱动库我们选择最新版V2.3,选择“空白工程”后点击“确定”按钮即可,如下图所示:

FM33G0xx的主要特性如下:  宽电压范围: 1.8~5.5V  工作温度范围: -40℃~+85℃  处理器内核  ARM Cortex-M0+  支持用户/特权模式  支持中断向量表重定向(VTOR)  最高40MHz主频  SWD调试接口  低功耗技术平台  典型运行功耗180uA/MHz  32KHz下LPRUN功耗: 15uA  Sleep模式下带LCD显示: 6uA  DeepSleep模式, RTC走时+24KB RAM保持+CPU内核保持: 1.2uA  RTC Backup模式, RTC走时+512字节备份寄存器, 0.9uA  存储器  128/256KB Flash空间  Flash擦写寿命: >20,000次  Flash数据保存时间: 10年@85℃  用户代码保护  24KB RAM空间  最大支持73个GPIO,最多24个外部引脚中断, 最多8个异步唤醒引脚  丰富的模拟外设  高可靠、可配置BOR电路(支持4级可编程下电复位阈值)  超低功耗PDR电路(支持4级可编程下电复位阈值)  可编程电源监测模块(SVD)  2x低功耗模拟比较器  11-bit低功耗∑-△ADC,最大支持9个外部通道  高精度温度传感器,精度优于+/-2℃  通信接口  UART*6  7816智能卡接口*2  SPI*3,主从模式  I2C*1, 主机400K  7通道外设DMA  可编程CRC校验模块  定时资源  8-bit基本定时器*4  16-bit扩展定时器*4  16-bit通用定时器*1  24-bit Systick*1  16-bit低功耗定时器*1,可在休眠模式下工作  带窗口的CPU看门狗定时器*1  系统看门狗定时器*1  低功耗实时时钟日历(RTCC),带有数字调校功能, 最高调校精度+/-0.06ppm
好的,以下是一个基于复旦单片机的按键点灯程序。假设使用的是FDK-STM32F103开发板,按键接在PA0口,LED灯接在PB0口。 首先需要在Keil中进行硬件配置,将PA0口配置为输入模式,PB0口配置为输出模式,然后生成对应的初始化代码。 然后在主函数中添加如下代码: ``` #include "FDK_STM32F10x.h" int main() { /* 初始化GPIO */ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); /* 初始化按键为高电平 */ GPIO_SetBits(GPIOA, GPIO_Pin_0); while (1) { /* 检测按键是否按下 */ if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET) { /* 点亮或熄灭LED灯 */ GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_0))); /* 等待按键松开 */ while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET); } } } ``` 程序的原理与前面的两个程序类似,通过轮询检测按键状态,当按键按下时,切换LED灯的状态。需要注意的是,在检测按键状态时需要使用GPIO_ReadInputDataBit函数,这是复旦单片机库中的GPIO操作函数。 需要注意的是,FDK-STM32F103开发板上的按键需要加上上拉电阻才能正常工作,可以通过在PA0口与VCC之间串联一个10KΩ的电阻实现。此外,需要根据具体硬件配置调整LED灯和按键对应的IO口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值