本次問題在于開始編程時(shí)候根本沒想好該怎么實(shí)現(xiàn)師兄的要求1:一個(gè)燈能亮or滅 2:實(shí)現(xiàn)PWM功能 3:能暫停and繼續(xù)
記住老師說的話,編程一定要構(gòu)思好才動(dòng)手,而且本次放棄的太早,考驗(yàn)的就是你的編程能力
單片機(jī)源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "timer.h"
- u8 data=1;
- u16 num=1;
- //函數(shù)名:main(void).
- //功能:初始化各類函數(shù),在死循環(huán)內(nèi)執(zhí)行相應(yīng)命令
- //輸入?yún)?shù):data,來自USART_RX_BUF[0]
- //返回值:NULL
- //時(shí)間:2018-7-27
- int main(void)
- {
- u8 t;
- u8 len;
- Stm32_Clock_Init(336,8,2,7);//設(shè)置時(shí)鐘,168Mhz
- delay_init(168); //延時(shí)初始化
- uart_init(84,115200); //串口初始化為115200
- LED_Init(); //初始化與LED連接的硬件接口
- TIM14_PWM_Init(500-1,84-1); //2Khz的PWM.84M/84=1Mhz的計(jì)數(shù)頻率,重裝載值500
- while(1)
- {
- if(USART_RX_STA&0x8000)
- {
- len=USART_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長度
- printf("\r\n您發(fā)送的消息為:\r\n");
- for(t=0;t<len;t++)
- {
- USART1->DR=USART_RX_BUF[t];
- while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
- }
- printf("\r\n\r\n");//插入換行
- USART_RX_STA=0;
- data=USART_RX_BUF[0];
- switch(data)
- {
- case 0x30: num=0; break;//按0 關(guān)
- case 0x31: num=1; break;//按1 開
- case 0x32: num=100; break;//按2 呼吸燈1
- case 0x33: num=200; break;//按3 呼吸燈2
- case 0x34: num=300; break;//按4 呼吸燈3
- case 0x35: num=5; break;//按5 暫停
- default:printf("\r\n 錯(cuò)誤 \r\n");
- }
- }
- My_mainpwm(num);
- }
- }
- //函數(shù)名:My_mainpwm(u16 num).
- //功能:根據(jù)上一次輸入data對(duì)應(yīng)num選擇相應(yīng)LED0_PWM_VAL.
- //輸入?yún)?shù):num(對(duì)應(yīng)LED0_PWM_VAL).
- //輸出參數(shù):NULL
- //返回值:NULL
- //時(shí)間:2018-7-27
- void My_mainpwm(u16 num)
- {
- static u16 led0pwmval=0;
- static u8 dir=1;
- switch(num)
- {
- case 0:LED0_PWM_VAL=0; break;//關(guān)燈
- case 1:LED0_PWM_VAL=400;break;//開燈
- case 100:
- case 200:
- case 300:
- delay_ms(10);
- //TIM14->CR1|=1<<0; //使能定時(shí)器
- if(dir)led0pwmval++;
- else led0pwmval--;
- if(led0pwmval>num)dir=0;
- if(led0pwmval==0)dir=1;
- LED0_PWM_VAL=led0pwmval; //開始或繼續(xù)呼吸燈
- break;
- case 5: break;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
寄存器串口控制呼吸燈最終版.rar
(133.77 KB, 下載次數(shù): 73)
2018-7-31 23:35 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|