找回密码
 立即注册
查看: 1660|回复: 15

一直不明白的定义

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:167
  • 最近打卡:2025-06-17 00:02:12

122

主题

162

回帖

369

积分

中级会员

积分
369
发表于 2024-2-11 12:07:57 | 显示全部楼层 |阅读模式
在STC单片机C语言编程上,开头部分一直有这样两行定义,在别的单片机上一直没看到。

   #define FOSC 12000000UL
   #define (65535-(FOSC/115200+2)/4)
是不是这样定义以后,不管你原来设定的是多少,内部的工作频率,软件都把它固定到12Mhz了,波特率也成立第二行设定的了?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2391

回帖

6018

积分

版主

积分
6018
发表于 2024-2-11 12:12:49 | 显示全部楼层
不是的,这个只是给编译器用的,真正的运行频率只能通过STC-ISP设定或者内部IRC频率寄存器来调节。
这个只是方便程序进行调用计算,比如说波特率需要使用你的主频来计算,外部改成24Mhz,同步更改FOSC的定义频率,就可以让代码自动计算出来合适的寄存器数值了。
主要作用是让代码自动计算填入,不用改了频率以后还一句一句的把时钟相关的代码都改过来
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:167
  • 最近打卡:2025-06-17 00:02:12

122

主题

162

回帖

369

积分

中级会员

积分
369
发表于 2024-2-11 13:26:26 | 显示全部楼层
王*** 发表于 2024-2-11 12:12
不是的,这个只是给编译器用的,真正的运行频率只能通过STC-ISP设定或者内部IRC频率寄存器来调节。
这个只 ...

就是说,以后无论采用什么频率,什么波特率,程序中与频率有关的语句(比如延时),就不用改了,只要改这两行就可以了?

点评

是的,这个就是给编译器看的。程序里面引用的都是这个定义进行计算。相当于简化了操作  详情 回复 发表于 2024-2-11 14:14
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2391

回帖

6018

积分

版主

积分
6018
发表于 2024-2-11 14:14:48 | 显示全部楼层
cjt*** 发表于 2024-2-11 13:26
就是说,以后无论采用什么频率,什么波特率,程序中与频率有关的语句(比如延时),就不用改了,只要改这 ...

是的,这个就是给编译器看的。程序里面引用的都是这个定义进行计算。相当于简化了操作
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:565
  • 最近打卡:2025-06-17 07:50:58
已绑定手机

50

主题

1816

回帖

3134

积分

论坛元老

积分
3134
发表于 2024-2-11 15:13:00 | 显示全部楼层
cjt*** 发表于 2024-2-11 13:26
就是说,以后无论采用什么频率,什么波特率,程序中与频率有关的语句(比如延时),就不用改了,只要改这 ...

这个需要设定值和isp写入的频率值一样,不然可能得不到想要的结果
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-17 08:23:30
已绑定手机

14

主题

1312

回帖

3302

积分

论坛元老

积分
3302
发表于 2024-2-11 17:33:22 | 显示全部楼层
#define FOSC 12000000UL         //这句的意思是C51预编译时用FOSC代替了12000000
#define AAA   (65535-(FOSC/115200+2)/4)          //C51预编译时,会自动计算这个AAA的具体值,并在编译时赋予定时器装载

这样写法的目的是简化晶振频率的修改复杂度,只改第一行的FOSC的值即可,且这句在文件的最前面很好找。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2800

积分

荣誉版主

积分
2800
发表于 2024-2-12 07:28:24 | 显示全部楼层
不会影响芯片实际工作的频率
只是便于 开发 维护 移植  
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:567
  • 最近打卡:2025-06-17 07:50:02

114

主题

2027

回帖

5817

积分

论坛元老

积分
5817
发表于 2024-2-12 09:04:23 | 显示全部楼层
本帖最后由 xxkj2010 于 2024-2-12 09:11 编辑

如果是使用内部IRC的,下载时必须根据设置的FOSC来选择主频率。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:463
  • 最近打卡:2025-06-16 10:17:59

24

主题

109

回帖

310

积分

中级会员

积分
310
发表于 2024-2-12 11:13:12 | 显示全部楼层
哦 原来如此
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-06-17 09:09:48
已绑定手机

79

主题

5131

回帖

9132

积分

超级版主

DebugLab

积分
9132
发表于 2024-2-12 14:48:08 | 显示全部楼层
本帖最后由 DebugLab 于 2024-2-12 14:49 编辑

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=6670
软件延时也可以使用这种方式
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 12:54 , Processed in 0.129097 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表