新聞中心
linux下PWM應(yīng)用實(shí)現(xiàn)

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供穆棱網(wǎng)站建設(shè)、穆棱做網(wǎng)站、穆棱網(wǎng)站設(shè)計(jì)、穆棱網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、穆棱企業(yè)網(wǎng)站模板建站服務(wù),十載穆棱做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Linux的Real-Time Extension(RT)提供的Pulse-Width Modulation(PWM)服務(wù)可以實(shí)現(xiàn)實(shí)時(shí)的方式控制外圍設(shè)備,例如LED燈、電機(jī)等。 PWM就是在一段時(shí)間內(nèi),控制信號(hào)電平從高值變成低值,再?gòu)牡椭底兓馗咧?,?duì)這個(gè)變動(dòng)的比率和高低電平的時(shí)間長(zhǎng)短來(lái)調(diào)節(jié)。
使用PWM在Linux系統(tǒng)中的應(yīng)用,可以大致分為如下幾步:
第一步,啟動(dòng)RT的信號(hào)控制,并安裝rt-pwm實(shí)用程序,它裝在“rtai-apt.tar.gz”文件中,我們還需要安裝RTAI軟件包以及其他用戶自定義內(nèi)核調(diào)試。
第二步,設(shè)置PWM硬件寄存器,以讓PWM信號(hào)可以由處理器來(lái)啟動(dòng)及停止,以及調(diào)節(jié)信號(hào)的占空比,這些操作應(yīng)當(dāng)通過(guò)編寫(xiě)硬件驅(qū)動(dòng)程序完成,通常使用ioctl函數(shù)實(shí)現(xiàn)。
第三步,創(chuàng)建PWM信號(hào),為創(chuàng)建PWM信號(hào),我們需要編寫(xiě)pwm_create函數(shù),該函數(shù)有兩個(gè)參數(shù):最高占空比和最低占空比。
第四步,調(diào)節(jié)PWM信號(hào),PWM信號(hào)的調(diào)節(jié)可以通過(guò)調(diào)用pwm_set函數(shù)來(lái)實(shí)現(xiàn),當(dāng)調(diào)節(jié)后的占空比不同設(shè)定的最大占空比和最小占空比時(shí),就會(huì)相應(yīng)調(diào)節(jié)PWM信號(hào)的頻率。
第五步,停止PWM信號(hào),當(dāng)我們不再需要使用PWM信號(hào)時(shí),可以調(diào)用pwm_stop函數(shù)來(lái)停止PWM信號(hào),釋放PWM硬件資源。
舉個(gè)例子,如果要使用PWM信號(hào)驅(qū)動(dòng)LED燈,我們可以這樣:
#include
#include
//創(chuàng)建PWM信號(hào)
int pwm_create(struct pwm_INFO_t *info){
return ioctl(pwm_fd, PWM_CMD_CREATE, info);
}
//設(shè)置PWM信號(hào)
int pwm_set(struct pwm_info_t *info){
return ioctl(pwm_fd, PWM_CMD_SET, info);
}
//停止PWM信號(hào)
int pwm_stop(struct pwm_info_t *info){
return ioctl(pwm_fd, PWM_CMD_STOP, info);
}
int main(void)
{
struct pwm_info_t info;
info.max_cycles = 100; //最大占空比100
info.min_cycles = 0; //最小占空比0
info.duty_cycles = 50; //當(dāng)前占空比50
info.period = 200; //周期200毫秒
//創(chuàng)建PWM信號(hào)
if (pwm_create(&info)
printf(“pwm_create error!\n”);
return -1;
}
//設(shè)置占空比
info.duty_cycles = 75;
if (pwm_set(&info)
printf(“pwm_set error!\n”);
return -1;
}
//停止PWM信號(hào)
if (pwm_stop(&info)
printf(“pwm_stop error!\n”);
return -1;
}
return 0;
}
通過(guò)Linux下PWM,我們可以實(shí)現(xiàn)實(shí)時(shí)控制各種外圍設(shè)備的功能,為人們的工作和生活提供了更多的便利,同時(shí)也節(jié)省了時(shí)間,提高了效率。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營(yíng)銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營(yíng)銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽(yáng)、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。
本文名稱:Linux下PWM應(yīng)用實(shí)現(xiàn)(pwmlinux)
轉(zhuǎn)載來(lái)源:http://www.5511xx.com/article/djsdipj.html


咨詢
建站咨詢
