學習串口中斷 和PWM波的簡單實驗
向串口發(fā)送 字符 輸出對應占空比的PWM波
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "exti.h"
- #include "beep.h"
- #include "timer.h"
-
- /************************************************
- 點亮DS2
- 向串口一發(fā)送0-100三個字符
- TIM2 CH4 PA3口 輸出對應占空比
- ************************************************/
- int main(void)
- {
- int x;
- u16 t;
- u16 len;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
- uart_init(115200); //串口初始化為115200
- LED_Init(); //LED燈初始化
- TIM2_PWM_Init(99,71);// 頻率10Khz 周期100us
- LED1=0; //點亮DS1
- while(1)
- {
- if(USART_RX_STA&0x8000)//不懂
- {
- len=USART_RX_STA&0x3fff;//不懂
- for(t=0;t<len;t++)
- {
- USART_SendData(USART1, USART_RX_BUF[t]);//向串口1發(fā)送數據
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結束
- }
- x=((USART_RX_BUF[0]-48)*100+(USART_RX_BUF[1]-48)*10+((USART_RX_BUF[2])-48)*1);// 把串口接受到的ASC碼轉換成十進制數
- printf("\r\n%d\n",x);//用串口1輸出X的值 當向串口1發(fā)送的為三位字符時X才正確
- USART_RX_STA=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
串口輸出對應占空比PWM.rar
(297.7 KB, 下載次數: 69)
2017-7-24 16:19 上傳
點擊文件名下載附件
|