|
有原理圖,PCB板,程序源碼
Altium Designer畫的PCB圖如下:(51hei附件中可下載工程文件)
0.png (25.54 KB, 下載次數(shù): 81)
下載附件
2019-7-29 00:59 上傳
0.png (9.63 KB, 下載次數(shù): 81)
下載附件
2019-7-29 01:00 上傳
0.png (2.86 KB, 下載次數(shù): 87)
下載附件
2019-7-29 00:59 上傳
單片機(jī)源程序如下:
- /*********************************************************/
- #include "config.h"
- /************* 本地函數(shù)聲明 **************/
- //========================================================================
- // 函數(shù): void delay_ms(u8 ms)
- // 描述: 延時(shí)函數(shù)。
- // 參數(shù): ms,要延時(shí)的ms數(shù), 這里只支持1~255ms. 自動(dòng)適應(yīng)主時(shí)鐘.
- // 返回: none.
- // 版本: VER1.0
- // 日期:
- // 備注:
- //========================================================================
- void delay_ms(u8 ms)
- {
- u16 i;
- do{
- i = MAIN_Fosc / 13000;
- while(--i) ; //14T per loop
- }while(--ms);
- }
- /************************ 定時(shí)器配置 ****************************/
- void Timer_config(void)
- {
- TIM_InitTypeDef TIM_InitStructure; //結(jié)構(gòu)定義
- TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
- TIM_InitStructure.TIM_Polity = PolityLow; //指定中斷優(yōu)先級(jí), PolityHigh,PolityLow
- TIM_InitStructure.TIM_Interrupt = ENABLE; //中斷是否允許, ENABLE或DISABLE
- TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T; //指定時(shí)鐘源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
- TIM_InitStructure.TIM_ClkOut = DISABLE; //是否輸出高速脈沖, ENABLE或DISABLE
- TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 480); //1ms初值,
- TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后啟動(dòng)定時(shí)器, ENABLE或DISABLE
- Timer_Inilize(Timer0,&TIM_InitStructure); //初始化Timer0 Timer0,Timer1,Timer2,Timer3,Timer4
-
- TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
- TIM_InitStructure.TIM_Polity = PolityLow; //指定中斷優(yōu)先級(jí), PolityHigh,PolityLow
- TIM_InitStructure.TIM_Interrupt = ENABLE; //中斷是否允許, ENABLE或DISABLE
- TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T; //指定時(shí)鐘源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
- TIM_InitStructure.TIM_ClkOut = DISABLE; //是否輸出高速脈沖, ENABLE或DISABLE
- TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1200); //10ms初值,
- TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后啟動(dòng)定時(shí)器, ENABLE或DISABLE
- Timer_Inilize(Timer1,&TIM_InitStructure); //初始化Timer1 Timer0,Timer1,Timer2
- TIM_InitStructure.TIM_Interrupt = ENABLE; //中斷是否允許, ENABLE或DISABLE. (注意: Timer2固定為16位自動(dòng)重裝, 中斷固定為低優(yōu)先級(jí))
- TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_Ext; //指定時(shí)鐘源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
- TIM_InitStructure.TIM_ClkOut = DISABLE; //是否輸出高速脈沖, ENABLE或DISABLE
- TIM_InitStructure.TIM_Value = 0; //初值
- TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后啟動(dòng)定時(shí)器, ENABLE或DISABLE
- Timer_Inilize(Timer3,&TIM_InitStructure); //初始化Timer3 Timer0,Timer1,Timer2,Timer3,Timer4
- TIM_InitStructure.TIM_Interrupt = ENABLE; //中斷是否允許, ENABLE或DISABLE. (注意: Timer2固定為16位自動(dòng)重裝, 中斷固定為低優(yōu)先級(jí))
- TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_Ext; //指定時(shí)鐘源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
- TIM_InitStructure.TIM_ClkOut = DISABLE; //是否輸出高速脈沖, ENABLE或DISABLE
- TIM_InitStructure.TIM_Value = 0; //初值
- TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后啟動(dòng)定時(shí)器, ENABLE或DISABLE
- Timer_Inilize(Timer4,&TIM_InitStructure); //初始化Timer4 Timer0,Timer1,Timer2,Timer3,Timer4
- }
- /***************** 串口配置函數(shù) *****************************/
- void UART_config(void)
- {
- COMx_InitDefine COMx_InitStructure; //結(jié)構(gòu)定義
- COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
- COMx_InitStructure.UART_BRT_Use = BRT_Timer2; //使用波特率, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
- COMx_InitStructure.UART_BaudRate = 9600ul; //波特率, 一般 110 ~ 115200
- COMx_InitStructure.UART_RxEnable = ENABLE; //接收允許, ENABLE或DISABLE
- COMx_InitStructure.UART_Interrupt = ENABLE; //中斷允許, ENABLE或DISABLE
- COMx_InitStructure.UART_P_SW = UART1_SW_P30_P31; //切換端口, UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17(必須使用內(nèi)部時(shí)鐘)
- USART_Configuration(USART1, &COMx_InitStructure); //初始化串口1 USART1,USART2,USART3,USART4
- // COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_8bit_BRTx,UART_9bit_BRTx
- // COMx_InitStructure.UART_BaudRate = 9600ul; //波特率, 110 ~ 115200
- // COMx_InitStructure.UART_RxEnable = ENABLE; //接收允許, ENABLE或DISABLE
- // COMx_InitStructure.UART_Interrupt = ENABLE; //中斷允許, ENABLE或DISABLE
- // COMx_InitStructure.UART_P_SW = UART2_SW_P10_P11; //切換端口, UART2_SW_P10_P11, UART2_SW_P46_P47
- // USART_Configuration(USART2, &COMx_InitStructure); //初始化串口2 USART1,USART2,USART3,USART4
- COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_8bit_BRTx,UART_9bit_BRTx
- COMx_InitStructure.UART_BRT_Use = BRT_Timer2; //使用波特率, BRT_Timer3, BRT_Timer2
- COMx_InitStructure.UART_BaudRate = 9600ul; //波特率, 110 ~ 115200
- COMx_InitStructure.UART_RxEnable = ENABLE; //接收允許, ENABLE或DISABLE
- COMx_InitStructure.UART_Interrupt = ENABLE; //中斷允許, ENABLE或DISABLE
- COMx_InitStructure.UART_P_SW = UART3_SW_P00_P01; //切換端口, UART3_SW_P00_P01, UART3_SW_P50_P51
- USART_Configuration(USART3, &COMx_InitStructure); //初始化串口2 USART1,USART2,USART3,USART4
- // COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_8bit_BRTx,UART_9bit_BRTx
- // COMx_InitStructure.UART_BRT_Use = BRT_Timer4; //使用波特率, BRT_Timer4, BRT_Timer2
- // COMx_InitStructure.UART_BaudRate = 9600ul; //波特率, 110 ~ 115200
- // COMx_InitStructure.UART_RxEnable = ENABLE; //接收允許, ENABLE或DISABLE
- // COMx_InitStructure.UART_Interrupt = ENABLE; //中斷允許, ENABLE或DISABLE
- // COMx_InitStructure.UART_P_SW = UART4_SW_P02_P03; //切換端口, UART4_SW_P02_P03, UART4_SW_P52_P53
- // USART_Configuration(USART4, &COMx_InitStructure); //初始化串口4 USART1,USART2,USART3,USART4
- }
- /**********************************************/
- void main(void)
- {
- SYSTEM_CLK_1T();
- P0n_standard(0xff); //設(shè)置為準(zhǔn)雙向口
- P1n_standard(0xff); //設(shè)置為準(zhǔn)雙向口
- P2n_standard(0xff); //設(shè)置為準(zhǔn)雙向口
- P3n_standard(0xff); //設(shè)置為準(zhǔn)雙向口
- P4n_standard(0xff); //設(shè)置為準(zhǔn)雙向口
- P5n_standard(0xff); //設(shè)置為準(zhǔn)雙向口
- UART_config(); //串口初始化
- Timer_config(); //定時(shí)器0,1初始化
- PWMInit();
- MPU6050Init();
- CarUpstandInit();
- EA = 1;
- delay_ms(10);
- PrintString(USART1,"STC15W4K32S4 USART1 Ready!\r\n");
- while (1)
- {
- UART_handle(); //處理串口和藍(lán)牙接收數(shù)據(jù)
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
兩輪平衡車.zip
(346.44 KB, 下載次數(shù): 90)
2019-7-28 10:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
雙面板 AD19.zip
(2.03 MB, 下載次數(shù): 67)
2019-7-28 10:09 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|