逗B少年搞程序08 老师讲的每一分钟都能整理出博客来(包括唱歌~)

    话说这个CSDN的“恒”已经黑了好久了啊,每次要在那上面写博客都要深思很久,顺便画画图,查查资料,整理一下知识网,然后再想想要喷谁。。。

    上午讲博客的时候我就在想,看看我能不能伸个专栏什么的,回来仔细看看自己写的这些玩意。。。恩,我还是自己开专栏吧。。。像我这样想起什么来就写什么,偶尔还带着一些别人不懂的东西,就不给咱们丢人了。

    哎,用心用跑偏了貌似不是什么好事啊。

    回来再说刚才偷听米老师给八期的讲考试系统判分功能可以改进的地方,别的高大上的东西没怎么听懂,就记住了一句不要从管理员的角度想问题。组合框的默认值,自动根据登陆的信息选择显示的内容,各种明显的提示,分数分析结果自动发到邮箱什么的。

    我一直都觉得我们的软件是要分析用户的工作特点然后再做的,但是不管是什么特点的人,都不希望做大量地工作,所以该让用户懒得时候,就让他们懒,最好就登个号,点一下,剩下的让系统来做。古人云:“大道至简。”联系到我们,用户简了,我们得道。

    本来这周的博客都想好了,总结一下设计模式,创建,结构型模式放天辉,行为型模式放夜魇,按照我最熟悉的模式也比个赛什么的,连负责主持的万事屋三人台词都想得差不多了。

    不过,刚才偶然看到SOA和AOP这两个东西就去查了查。。。其实是十一期的师弟问我这是啥我都不知道。。。

    AOP——面向切面编程。

    看了一下百度百科,面向切面编程大概就是把某一个动作划分出来,比如机房收费系统中的“权限检查”这一动作。我的理解,比较简单,大概就是某些设计到很多类,或是能独立出来的某些动作吧。我就说有些时候面向对象不是万能的吧。

    SOA——面向服务的体系结构。

    米老师说面向服务的时候,我就想,服务,是不是点什么菜上什么菜的那个服务。问度娘后,发现这个东西我们都见过了,就是八期师哥师姐做的那个高效平台啊。

    据度娘说这两个东西貌似都还在发展的阶段,都不成熟,但是将来一定是可以有很亮眼的表现的。

    好的,到这里也就写不出什么了,后面就是我的吐槽了。

    也许我应该去维基百科查查这俩东西,那里或许能得到更多的信息,但是最重要的一点是我认识到我们走在了技术的最前沿,回家我就拿这些东西问问我姐去,看看她们这种培训班出身的到底有多厉害,省的家长老是让我考研去,我那语文老师教的数学能考上才见鬼了!啊?体育老师,不知道现在学体育的都学计算机来了啊?能挣一万多呢!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
好的,以下是一个简单的S5PV210的利用定时器和蜂鸣器唱歌程序,供参考: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/mman.h> #define GPD0CON (*(volatile unsigned long *)0xE02000A0) #define GPD0DAT (*(volatile unsigned long *)0xE02000A4) #define TCFG0 (*(volatile unsigned long *)0xE2500000) #define TCFG1 (*(volatile unsigned long *)0xE2500004) #define TCON (*(volatile unsigned long *)0xE2500008) #define TCNTB0 (*(volatile unsigned long *)0xE250000C) #define TCMPB0 (*(volatile unsigned long *)0xE2500010) void delay_ms(int ms) { usleep(ms * 1000); } void set_pwm(int freq, int duty) { int div = 255; int tcfg0 = 0x0; int tcfg1 = 0x0; TCON &= ~(1 << 2); TCON |= (1 << 1); TCON &= ~(1 << 1); tcfg0 = (1 << 16) | (div << 8) | 0xff; tcfg1 = (1 << 12); TCFG0 &= ~(0xff << 8); TCFG0 |= tcfg0; TCFG1 &= ~(0xf << 4); TCFG1 |= tcfg1; TCNTB0 = (1000000 / freq) - 1; TCMPB0 = (1000000 / freq * duty / 255) - 1; TCON |= (1 << 3); TCON &= ~(1 << 3); } void play_music(int *music, int len) { int i; for (i = 0; i < len; i++) { set_pwm(music[i], 128); delay_ms(200); set_pwm(0, 0); delay_ms(10); } } int main(int argc, char **argv) { int fd; volatile unsigned long *gpio; int music[] = { 523, 587, 659, 698, 784, 880, 988, 1047 }; int len = sizeof(music) / sizeof(int); int i; fd = open("/dev/mem", O_RDWR | O_SYNC); if (fd < 0) { perror("open"); exit(1); } gpio = mmap(NULL, 0x100, PROT_READ | PROT_WRITE, MAP_SHARED, fd, (off_t)0xE0200000); if (gpio == MAP_FAILED) { perror("mmap"); exit(1); } GPD0CON &= ~(0xf << 0); GPD0CON |= (0x2 << 0); while (1) { play_music(music, len); } munmap((void *)gpio, 0x100); close(fd); return 0; } ``` 该程序使用了S5PV210的定时器和GPIO控制蜂鸣器,实现了一个简单的音乐播放器。程序中使用了set_pwm()函数来设置定时器和蜂鸣器的工作参数,使用delay_ms()函数来实现延时操作,使用play_music()函数来播放音乐。在main()函数中,不断调用play_music()函数来循环播放音乐。需要注意的是,该程序仅供参考,具体实现方式需要根据具体的硬件和应用场景进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值