abccba 发表于 2017-7-20 10:53:32

CSR8670开发(2)-LED、蜂鸣器、振动器控制

1、用bluelab打开sink工程
2、修改main.c文件
http://blog.iytc.net/wordpress/wp-content/uploads/2017/07/267.png
在main()函数前增加

#define MYLED (1 << 10) /* bit 10 */
#define MYDELAY 500 /* ms */
static void myled_controller( Task t, MessageId id, Message payload )
{
PioSet32( MYLED, (PioGet32() ^ MYLED) );//PIO10电平反转
MessageSendLater( t, 0, 0, MYDELAY ); //设置延时
}
static TaskData myled_controller_task = { myled_controller };

设置PIO10闪烁
在main()函数中增加:
PioSetDir32(MYLED, MYLED); //设置PIO10为输出
PioSet32(MYLED, MYLED); //初始化PIO10为高电平
MessageSend( &myled_controller_task, 0 , 0 );
http://blog.iytc.net/wordpress/wp-content/uploads/2017/07/592.png重新编译、运行程序,PIO10连接的指示灯会闪烁将上面的PIO10改成PIO14,延时改为1ms,就可以驱动蜂鸣器发出500Hz的声音改成PIO15,可以驱动振动器动作注意,当PIO被系统配置占用的时候,如果用PioSet32设置PIO的数值,会导致设置语句执行失败,比如PIO6被系统占用:
http://blog.iytc.net/wordpress/wp-content/uploads/2017/07/691.png
此时用语句:
PioSet32( (1<<11)|(1<<10)|(1<<7)|(1<<6)|(1<<5), itemp); 会导致整条语句执行失败

mupro 发表于 2017-7-20 11:20:53

支持

minetest1 发表于 2017-7-24 10:38:35

学习, 谢谢分享

Wney 发表于 2017-7-26 11:58:11

可以用,不错,不过一般很少拿8670当单片机用,太贵了。

跋山涉水 发表于 2017-7-29 23:20:25

不错,讲的很详细了。路过学习。

Rhino007 发表于 2017-8-20 19:07:03

楼主棒,,好东西分享,感谢楼主

shiming456 发表于 2017-8-26 09:46:36

谢谢楼主分享,mark

yc_ki 发表于 2017-8-28 12:00:31

谢谢楼主分享:lol

yc_ki 发表于 2017-9-4 16:49:28

好东西分享,感谢楼主

ksn13 发表于 2017-9-5 10:08:30

我是新手这个经验对我非常有用,感谢感谢
页: [1] 2
查看完整版本: CSR8670开发(2)-LED、蜂鸣器、振动器控制