这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【Let'sdo第1期-DIY功率检测与控制系统】过程贴2-小白让灯闪起来

共3条 1/1 1 跳转至

【Let'sdo第1期-DIY功率检测与控制系统】过程贴2-小白让灯闪起来

菜鸟
2025-05-22 13:56:06     打赏

通过TIM3定时器精确定时1000毫秒的 GPIO 电平翻转以及 LED 闪烁。

第一步:

创建项目 LED005

一.打开STM32CubeMX,在电脑桌面找到下面的这个图标(不是你放电脑显示器的桌子面哦)。

image.png

二.选择这次用的开发版(STM32F411REx),双击打开。

image.png   image.png

三.生成项目前的配置。

1.管脚配置默认是设置好的。

1747887932581099.png

2.调试方式配置,选Serial Wire

1747888883268273.png

3.时钟树配置:由于开发板上没有外部晶振,使用内部RC振荡器,配置主频100MHz。

1747888197790762.png1747889002249385.png

注:关于这个PSC=9999和ARR=9999怎么来的,我没有去算,直接给了DeepSeek一段话让他帮我算的,呵呵。不愿费脑子。

T = (psc+1)(arr+1)/Tclk Tclk=100mhz 我想要T=1000毫秒(1秒)的话,PSC=多少?arr=多少?

以下是DeepSeek解答的过程:

    目标公式
    定时时间 T=(psc+1)(arr+1)fclkT=fclk(psc+1)(arr+1),需实现 T=1 秒T=1,且 fclk=100 MHz=100×106 Hzfclk=100MHz=100×106Hz

    推导参数关系
    变形公式得:

    (psc+1)(arr+1)=T×fclk=1×100×106=100,000,000(psc+1)(arr+1)=T×fclk=1×100×106=100,000,000

    需找到整数 pscpsc 和 arrarr,满足:

    psc+1≤65536psc+165536(假设寄存器为16位)

    arr+1≤65536arr+165536

    可能的参数组合

    组合1

    psc+1=10,000,arr+1=10,000psc+1=10,000,arr+1=10,000

    则:

    psc=9999,arr=9999psc=9999,arr=9999

    验证:

    T=10,000×10,000100×106=1 秒T=100×10610,000×10,000=1

    组合2

    psc+1=20,000,arr+1=5,000psc+1=20,000,arr+1=5,000

    则:

    psc=19,999,arr=4,999psc=19,999,arr=4,999

    验证:

    T=20,000×5,000100×106=1 秒T=100×10620,000×5,000=1

    组合3

    psc+1=25,000,arr+1=4,000psc+1=25,000,arr+1=4,000

    则:

    psc=24,999,arr=3,999psc=24,999,arr=3,999

    验证:

    T=25,000×4,000100×106=1 秒T=100×10625,000×4,000=1

    验证合法性

    所有参数均满足 psc≤65535psc65535arr≤65535arr65535

结果
实现 1秒定时 的参数组合(任选其一):

    psc=9999psc=9999arr=9999arr=9999

    psc=19,999psc=19,999arr=4,999arr=4,999

    psc=24,999psc=24,999arr=3,999arr=3,999

任一组合同样满足精确的1秒定时需求。

4.GPIO配置,PC13连接蓝色按键,配置为输入模式;PA5连接LED2,配置为推挽输出模式。

1747889723795784.png1747889787241502.png1747890005410586.png

5.非常关键的设置,不设置他就不能正常中断,我反正不懂为啥这样设置,希望大佬们能给小白们普及一下知识,万分感谢

1747890303775506.png

6.配置项目名称等,全程不能有中文。

1747890570438499.png

1747890636395470.png

配置全部完成,开始生成。

1747890837962986.png

四.项目生成    完成后的详细操作

1.生成成功后,打开项目应该是这样的。

1747891273709395.png

1747891214843570.png

2.写入以下代码(  HAL_TIM_Base_Start_IT(&htim3);  )。

1747891719260748.png

3.定义一个变量 (uint16_t dtTime3;  )

image.png

4.时钟中断代码:

1747892625496256.png

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim == &htim3){
        dtTime3++;
        if(dtTime3 >=10)//这里如果是10就是10秒
        {
            dtTime3 = 0 ;
            HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);  
        }
    }
}
/* USER CODE END 1 */

五.编译配置

1.编译时可能会出现以下错误。

1747892853779542.png

修改编译器版本

1747892983309003.png

选择debug模式

1747893131160280.png


六.编译完成没有问题就可以写入了。

祝各位小白和我一样可以入门。




关键词: STM32F411RET6    

院士
2025-05-26 16:44:18     打赏
2楼

楼主 还是需要通过示波器来验证一下频率周期是否符合预期的


院士
2025-05-30 22:46:54     打赏
3楼

论坛有活动的。可以免费获得一个逻辑分析仪


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]