lua接口增加LCD显示函数,DAP固件修改硬件复位缺陷

This commit is contained in:
armfly 2020-12-04 02:49:54 +08:00
parent 0ab5e357af
commit 8e9cc9e242
24 changed files with 1121 additions and 283 deletions

View File

@ -1,3 +1,9 @@
----------------------------------------------------------------------------
2020-12-04 V1.41
1.lua接口增加LCD显示函数可以构建图形元素. 新增文件 lua_if_disp.c
2.DAP固件升级到V1.02版本解决复位方面的小BUG增加NRST电平指示功能.
3.bsp_InitTVCC() 内部取消TVCC_OFF的语句. 避免从DAP固件跳入后TVCC短暂关闭
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
2020-11-29 V1.40 【重大更新】 2020-11-29 V1.40 【重大更新】
新增功能: 新增功能:

View File

@ -256,7 +256,7 @@
<Group> <Group>
<GroupName>App</GroupName> <GroupName>App</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -552,7 +552,7 @@
<Group> <Group>
<GroupName>BSP</GroupName> <GroupName>BSP</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1016,7 +1016,7 @@
<Group> <Group>
<GroupName>MDK-ARM</GroupName> <GroupName>MDK-ARM</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1708,7 +1708,7 @@
<Group> <Group>
<GroupName>Doc</GroupName> <GroupName>Doc</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -3632,6 +3632,18 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>19</GroupNumber>
<FileNumber>270</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\User\lua\if\lua_if_disp.c</PathWithFileName>
<FilenameWithoutPath>lua_if_disp.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -3642,7 +3654,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>270</FileNumber> <FileNumber>271</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3654,7 +3666,7 @@
</File> </File>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>271</FileNumber> <FileNumber>272</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3666,7 +3678,7 @@
</File> </File>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>272</FileNumber> <FileNumber>273</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3678,7 +3690,7 @@
</File> </File>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>273</FileNumber> <FileNumber>274</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3690,7 +3702,7 @@
</File> </File>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>274</FileNumber> <FileNumber>275</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3702,7 +3714,7 @@
</File> </File>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>275</FileNumber> <FileNumber>276</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3714,7 +3726,7 @@
</File> </File>
<File> <File>
<GroupNumber>20</GroupNumber> <GroupNumber>20</GroupNumber>
<FileNumber>276</FileNumber> <FileNumber>277</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3734,7 +3746,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>21</GroupNumber> <GroupNumber>21</GroupNumber>
<FileNumber>277</FileNumber> <FileNumber>278</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3746,7 +3758,7 @@
</File> </File>
<File> <File>
<GroupNumber>21</GroupNumber> <GroupNumber>21</GroupNumber>
<FileNumber>278</FileNumber> <FileNumber>279</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3758,7 +3770,7 @@
</File> </File>
<File> <File>
<GroupNumber>21</GroupNumber> <GroupNumber>21</GroupNumber>
<FileNumber>279</FileNumber> <FileNumber>280</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3770,7 +3782,7 @@
</File> </File>
<File> <File>
<GroupNumber>21</GroupNumber> <GroupNumber>21</GroupNumber>
<FileNumber>280</FileNumber> <FileNumber>281</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3782,7 +3794,7 @@
</File> </File>
<File> <File>
<GroupNumber>21</GroupNumber> <GroupNumber>21</GroupNumber>
<FileNumber>281</FileNumber> <FileNumber>282</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3794,7 +3806,7 @@
</File> </File>
<File> <File>
<GroupNumber>21</GroupNumber> <GroupNumber>21</GroupNumber>
<FileNumber>282</FileNumber> <FileNumber>283</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3814,7 +3826,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>22</GroupNumber> <GroupNumber>22</GroupNumber>
<FileNumber>283</FileNumber> <FileNumber>284</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3826,7 +3838,7 @@
</File> </File>
<File> <File>
<GroupNumber>22</GroupNumber> <GroupNumber>22</GroupNumber>
<FileNumber>284</FileNumber> <FileNumber>285</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3838,7 +3850,7 @@
</File> </File>
<File> <File>
<GroupNumber>22</GroupNumber> <GroupNumber>22</GroupNumber>
<FileNumber>285</FileNumber> <FileNumber>286</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3858,7 +3870,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>23</GroupNumber> <GroupNumber>23</GroupNumber>
<FileNumber>286</FileNumber> <FileNumber>287</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3870,7 +3882,7 @@
</File> </File>
<File> <File>
<GroupNumber>23</GroupNumber> <GroupNumber>23</GroupNumber>
<FileNumber>287</FileNumber> <FileNumber>288</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3882,7 +3894,7 @@
</File> </File>
<File> <File>
<GroupNumber>23</GroupNumber> <GroupNumber>23</GroupNumber>
<FileNumber>288</FileNumber> <FileNumber>289</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3894,7 +3906,7 @@
</File> </File>
<File> <File>
<GroupNumber>23</GroupNumber> <GroupNumber>23</GroupNumber>
<FileNumber>289</FileNumber> <FileNumber>290</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3906,7 +3918,7 @@
</File> </File>
<File> <File>
<GroupNumber>23</GroupNumber> <GroupNumber>23</GroupNumber>
<FileNumber>290</FileNumber> <FileNumber>291</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3926,7 +3938,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>291</FileNumber> <FileNumber>292</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3938,7 +3950,7 @@
</File> </File>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>292</FileNumber> <FileNumber>293</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3950,7 +3962,7 @@
</File> </File>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>293</FileNumber> <FileNumber>294</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3962,7 +3974,7 @@
</File> </File>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>294</FileNumber> <FileNumber>295</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3974,7 +3986,7 @@
</File> </File>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>295</FileNumber> <FileNumber>296</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3986,7 +3998,7 @@
</File> </File>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>296</FileNumber> <FileNumber>297</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -3998,7 +4010,7 @@
</File> </File>
<File> <File>
<GroupNumber>24</GroupNumber> <GroupNumber>24</GroupNumber>
<FileNumber>297</FileNumber> <FileNumber>298</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4018,7 +4030,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>25</GroupNumber> <GroupNumber>25</GroupNumber>
<FileNumber>298</FileNumber> <FileNumber>299</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4030,7 +4042,7 @@
</File> </File>
<File> <File>
<GroupNumber>25</GroupNumber> <GroupNumber>25</GroupNumber>
<FileNumber>299</FileNumber> <FileNumber>300</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4050,7 +4062,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>300</FileNumber> <FileNumber>301</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4062,7 +4074,7 @@
</File> </File>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>301</FileNumber> <FileNumber>302</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4074,7 +4086,7 @@
</File> </File>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>302</FileNumber> <FileNumber>303</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4086,7 +4098,7 @@
</File> </File>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>303</FileNumber> <FileNumber>304</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4098,7 +4110,7 @@
</File> </File>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>304</FileNumber> <FileNumber>305</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4110,7 +4122,7 @@
</File> </File>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>305</FileNumber> <FileNumber>306</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4122,7 +4134,7 @@
</File> </File>
<File> <File>
<GroupNumber>26</GroupNumber> <GroupNumber>26</GroupNumber>
<FileNumber>306</FileNumber> <FileNumber>307</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4142,7 +4154,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>27</GroupNumber> <GroupNumber>27</GroupNumber>
<FileNumber>307</FileNumber> <FileNumber>308</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4154,7 +4166,7 @@
</File> </File>
<File> <File>
<GroupNumber>27</GroupNumber> <GroupNumber>27</GroupNumber>
<FileNumber>308</FileNumber> <FileNumber>309</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4166,7 +4178,7 @@
</File> </File>
<File> <File>
<GroupNumber>27</GroupNumber> <GroupNumber>27</GroupNumber>
<FileNumber>309</FileNumber> <FileNumber>310</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4178,7 +4190,7 @@
</File> </File>
<File> <File>
<GroupNumber>27</GroupNumber> <GroupNumber>27</GroupNumber>
<FileNumber>310</FileNumber> <FileNumber>311</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4190,7 +4202,7 @@
</File> </File>
<File> <File>
<GroupNumber>27</GroupNumber> <GroupNumber>27</GroupNumber>
<FileNumber>311</FileNumber> <FileNumber>312</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4202,7 +4214,7 @@
</File> </File>
<File> <File>
<GroupNumber>27</GroupNumber> <GroupNumber>27</GroupNumber>
<FileNumber>312</FileNumber> <FileNumber>313</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4222,7 +4234,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>28</GroupNumber> <GroupNumber>28</GroupNumber>
<FileNumber>313</FileNumber> <FileNumber>314</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4234,7 +4246,7 @@
</File> </File>
<File> <File>
<GroupNumber>28</GroupNumber> <GroupNumber>28</GroupNumber>
<FileNumber>314</FileNumber> <FileNumber>315</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4246,7 +4258,7 @@
</File> </File>
<File> <File>
<GroupNumber>28</GroupNumber> <GroupNumber>28</GroupNumber>
<FileNumber>315</FileNumber> <FileNumber>316</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4258,7 +4270,7 @@
</File> </File>
<File> <File>
<GroupNumber>28</GroupNumber> <GroupNumber>28</GroupNumber>
<FileNumber>316</FileNumber> <FileNumber>317</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4278,7 +4290,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>29</GroupNumber> <GroupNumber>29</GroupNumber>
<FileNumber>317</FileNumber> <FileNumber>318</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -4290,7 +4302,7 @@
</File> </File>
<File> <File>
<GroupNumber>29</GroupNumber> <GroupNumber>29</GroupNumber>
<FileNumber>318</FileNumber> <FileNumber>319</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>

View File

@ -1920,6 +1920,11 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\..\User\lua\if\lua_if_swim.c</FilePath> <FilePath>..\..\User\lua\if\lua_if_swim.c</FilePath>
</File> </File>
<File>
<FileName>lua_if_disp.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\User\lua\if\lua_if_disp.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>

View File

@ -68,7 +68,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD MemManage_Handler ; MPU Fault Handler DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler DCD UsageFault_Handler ; Usage Fault Handler
DCD 0x00000140 ; Reserved H7-TOOL APP 固件版本 DCD 0x00000141 ; Reserved H7-TOOL APP 固件版本
DCD 0 ; Reserved 固件小版本 DCD 0 ; Reserved 固件小版本
DCD 0 ; Reserved DCD 0 ; Reserved
DCD 0 ; Reserved DCD 0 ; Reserved

Binary file not shown.

View File

@ -34,7 +34,7 @@ typedef struct
int32_t DefaultValue; /* 缺省值 */ int32_t DefaultValue; /* 缺省值 */
}PARAM_LIST_T; }PARAM_LIST_T;
void UartMonInitParam(uint16_t _MainStatus); void UartMonInitParam(uint16_t _ParamID);
void ModifyParam(uint16_t _MainStatus); void ModifyParam(uint16_t _MainStatus);
void UartMonCheckParam(void); void UartMonCheckParam(void);

View File

@ -1208,14 +1208,6 @@ uint8_t SelectFile(char *_InitPath, uint16_t _MainStatus, uint16_t _RetStatus, c
fListDir = 1; fListDir = 1;
while (g_MainStatus == _MainStatus) while (g_MainStatus == _MainStatus)
{ {
if (fRefresh) /* 刷新整个界面 */
{
fRefresh = 0;
LCD_ClearMenu(&g_tMenuLua);
LCD_DispMenu(&g_tMenuLua);
}
if (fListDir == 1) if (fListDir == 1)
{ {
fListDir = 0; fListDir = 0;
@ -1262,6 +1254,14 @@ uint8_t SelectFile(char *_InitPath, uint16_t _MainStatus, uint16_t _RetStatus, c
fRefresh = 1; fRefresh = 1;
} }
if (fRefresh) /* 刷新整个界面 */
{
fRefresh = 0;
LCD_ClearMenu(&g_tMenuLua); /* 清屏菜单区 */
LCD_DispMenu(&g_tMenuLua);
}
bsp_Idle(); bsp_Idle();
ucKeyCode = bsp_GetKey(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */ ucKeyCode = bsp_GetKey(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */

View File

@ -88,6 +88,9 @@ int main(void)
LoadParam(); /* 读取应用程序参数, 该函数在param.c */ LoadParam(); /* 读取应用程序参数, 该函数在param.c */
bsp_InitTVCC(); /* TVCC控制引脚 -- 放到后面读完参数后设置 */
bsp_SetTVCC(3300);
ST7789_SetDirection(g_tParam.DispDir); ST7789_SetDirection(g_tParam.DispDir);
/* 主程序采用状态机实现程序功能切换 */ /* 主程序采用状态机实现程序功能切换 */
@ -153,8 +156,6 @@ int main(void)
bsp_InitESP32(); bsp_InitESP32();
bsp_SetTVCC(3300);
DSO_InitHard(); DSO_InitHard();
DSO_SetDC(1, 1); DSO_SetDC(1, 1);
DSO_SetDC(2, 1); DSO_SetDC(2, 1);

View File

@ -308,28 +308,28 @@ void ModifyParam(uint16_t _MainStatus)
********************************************************************************************************* *********************************************************************************************************
* : UartMonInitParam * : UartMonInitParam
* : * :
* : _MainStatus * : _ParamID : ID
* : * :
********************************************************************************************************* *********************************************************************************************************
*/ */
void UartMonInitParam(uint16_t _MainStatus) void UartMonInitParam(uint16_t _ParamID)
{ {
if (_MainStatus == MODIFY_PARAM_UART_MON) if (_ParamID == MODIFY_PARAM_UART_MON)
{ {
s_pParamList = UartMonParamList; s_pParamList = UartMonParamList;
s_ParamCount = UART_MON_PARAM_COUNT; s_ParamCount = UART_MON_PARAM_COUNT;
} }
else if (_MainStatus == MODIFY_PARAM_SYSTEM) else if (_ParamID == MODIFY_PARAM_SYSTEM)
{ {
s_pParamList = SysBaseParamList; s_pParamList = SysBaseParamList;
s_ParamCount = SYS_BASE_PARAM_COUNT; s_ParamCount = SYS_BASE_PARAM_COUNT;
} }
else if (_MainStatus == MODIFY_PARAM_PROG) else if (_ParamID == MODIFY_PARAM_PROG)
{ {
s_pParamList = ProgParamList; s_pParamList = ProgParamList;
s_ParamCount = PROG_PARAM_COUNT; s_ParamCount = PROG_PARAM_COUNT;
} }
else if (_MainStatus == MODIFY_PARAM_NET) else if (_ParamID == MODIFY_PARAM_NET)
{ {
s_pParamList = NetParamList; s_pParamList = NetParamList;
s_ParamCount = NET_PARAM_COUNT; s_ParamCount = NET_PARAM_COUNT;

View File

@ -145,7 +145,7 @@ void status_MonitorCan(void)
LCD_SetEncode(ENCODE_GBK); LCD_SetEncode(ENCODE_GBK);
UartMonInitParam(g_MainStatus); UartMonInitParam(MODIFY_PARAM_UART_MON);
UartMonCheckParam(); /* 检查参数 */ UartMonCheckParam(); /* 检查参数 */
fInit = 1; fInit = 1;

View File

@ -95,6 +95,8 @@ CMD_LIST_T tBtnList[16];
char g_OutText[4 * 1024] = {0}; /* 最多支持4K字节文本缓存 */ char g_OutText[4 * 1024] = {0}; /* 最多支持4K字节文本缓存 */
MEMO_T g_LuaMemo = {0}; MEMO_T g_LuaMemo = {0};
uint8_t g_LuaSubStatus = 0; /* 0表示命令行界面 1表示GUI界面 */
/* /*
char s_lua_prog_buf[LUA_PROG_LEN_MAX + 1]; char s_lua_prog_buf[LUA_PROG_LEN_MAX + 1];
uint32_t s_lua_prog_len; uint32_t s_lua_prog_len;
@ -158,178 +160,200 @@ void FindBtnNoteCmd(void)
void status_LuaRun(void) void status_LuaRun(void)
{ {
uint8_t ucKeyCode; /* 按键代码 */ lua_DownLoadFile(g_tFileList.Path); /* 重新初始化lua环境并装载lua文件到内存不执行 */
uint8_t fRefresh;
FONT_T tFontBtn, tFontMemo;
uint8_t cursor = 0;
BUTTON_T btn1, btn2, btn3, btn4, btn5, btn6;
DispHeader("Lua小程序");
/* --GUIMODE=1 --用于识别GUI程序还是print程序 */
if (memcmp(s_lua_prog_buf, "--GUIMODE=1", 11) == 0)
{ {
g_LuaMemo.Left = MEMO_X; g_LuaSubStatus = 1;
g_LuaMemo.Top = MEMO_Y; }
g_LuaMemo.Height = MEMO_H; else
g_LuaMemo.Width = MEMO_W; {
g_LuaMemo.Font = &tFontMemo; g_LuaSubStatus = 0;
//g_LuaMemo.Color = CL_WHITE;
g_LuaMemo.Text = g_OutText;
g_LuaMemo.MaxLen = sizeof(g_OutText);
g_LuaMemo.LineCount = 0;
g_LuaMemo.WordWrap = 0;
g_LuaMemo.LineOffset = 0;
LCD_InitMemo(&g_LuaMemo);
LCD_DrawMemo(&g_LuaMemo);
} }
bsp_Idle(); if (g_LuaSubStatus == 1) /* GUI界面 --需要是死循环 */
/* 设置字体参数 */
{ {
tFontBtn.FontCode = FC_ST_16; /* 字体代码 16点阵 */ lua_RunLuaProg(); /* 执行lua -阻塞 */
tFontBtn.FrontColor = INFO_NAME_COLOR; /* 字体颜色 */
tFontBtn.BackColor = CL_MASK; /* 文字背景颜色 */
tFontBtn.Space = 0; /* 文字间距,单位 = 像素 */
tFontMemo.FontCode = FC_ST_16; /* 字体代码 16点阵 */ while(bsp_GetKey());
tFontMemo.FrontColor = CL_WHITE; /* 字体颜色 */ g_MainStatus = MS_LUA_SELECT_FILE;
tFontMemo.BackColor = CL_MASK; /* 文字背景颜色 */
tFontMemo.Space = 0; /* 文字间距,单位 = 像素 */
} }
else /* 命令行界面 -必须是非阻塞的 */
lua_DownLoadFile(g_tFileList.Path);
GetChipTypeFromLua(g_Lua); /* 从lua中解析芯片类型 */
/* 从lua文件中解析按钮名字和程序语句 */
FindBtnNoteCmd();
fRefresh = 1;
while (g_MainStatus == MS_LUA_EXEC_FILE)
{ {
if (fRefresh) /* 刷新整个界面 */ uint8_t ucKeyCode; /* 按键代码 */
uint8_t fRefresh;
FONT_T tFontBtn, tFontMemo;
uint8_t cursor = 0;
BUTTON_T btn1, btn2, btn3, btn4, btn5, btn6;
DispHeader("Lua小程序");
{ {
fRefresh = 0; g_LuaMemo.Left = MEMO_X;
g_LuaMemo.Top = MEMO_Y;
g_LuaMemo.Height = MEMO_H;
g_LuaMemo.Width = MEMO_W;
g_LuaMemo.Font = &tFontMemo;
//g_LuaMemo.Color = CL_WHITE;
g_LuaMemo.Text = g_OutText;
g_LuaMemo.MaxLen = sizeof(g_OutText);
g_LuaMemo.LineCount = 0;
g_LuaMemo.WordWrap = 0;
g_LuaMemo.LineOffset = 0;
{ LCD_InitMemo(&g_LuaMemo);
btn1.Left = BTN1_X; LCD_DrawMemo(&g_LuaMemo);
btn1.Top = BTN1_Y;
btn1.Height = BTN1_H;
btn1.Width = BTN1_W;
btn1.pCaption = tBtnList[0].Note;
btn1.Font = &tFontBtn;
btn1.Focus = 0;
btn2.Left = BTN2_X;
btn2.Top = BTN2_Y;
btn2.Height = BTN2_H;
btn2.Width = BTN2_W;
btn2.pCaption = tBtnList[1].Note;
btn2.Font = &tFontBtn;
btn2.Focus = 0;
btn3.Left = BTN3_X;
btn3.Top = BTN3_Y;
btn3.Height = BTN3_H;
btn3.Width = BTN3_W;
btn3.pCaption = tBtnList[2].Note;
btn3.Font = &tFontBtn;
btn3.Focus = 0;
btn4.Left = BTN4_X;
btn4.Top = BTN4_Y;
btn4.Height = BTN4_H;
btn4.Width = BTN4_W;
btn4.pCaption = tBtnList[3].Note;
btn4.Font = &tFontBtn;
btn4.Focus = 0;
btn5.Left = BTN5_X;
btn5.Top = BTN5_Y;
btn5.Height = BTN5_H;
btn5.Width = BTN5_W;
btn5.pCaption = tBtnList[4].Note;
btn5.Font = &tFontBtn;
btn5.Focus = 0;
btn6.Left = BTN6_X;
btn6.Top = BTN6_Y;
btn6.Height = BTN6_H;
btn6.Width = BTN6_W;
btn6.pCaption = tBtnList[5].Note;
btn6.Font = &tFontBtn;
btn6.Focus = 0;
if (cursor == 0) btn1.Focus = 1;
else if (cursor == 1) btn2.Focus = 1;
else if (cursor == 2) btn3.Focus = 1;
else if (cursor == 3) btn4.Focus = 1;
else if (cursor == 4) btn5.Focus = 1;
else if (cursor == 5) btn6.Focus = 1;
LCD_SetEncode(ENCODE_GBK); /* 按钮文字是GBK编码 */
LCD_DrawButton(&btn1);
LCD_DrawButton(&btn2);
LCD_DrawButton(&btn3);
LCD_DrawButton(&btn4);
LCD_DrawButton(&btn5);
LCD_DrawButton(&btn6);
LCD_SetEncode(ENCODE_UTF8); /* 还原UTF8编码 */
}
} }
bsp_Idle(); bsp_Idle();
ucKeyCode = bsp_GetKey(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */ /* 设置字体参数 */
if (ucKeyCode != KEY_NONE)
{ {
/* 有键按下 */ tFontBtn.FontCode = FC_ST_16; /* 字体代码 16点阵 */
switch (ucKeyCode) tFontBtn.FrontColor = INFO_NAME_COLOR; /* 字体颜色 */
tFontBtn.BackColor = CL_MASK; /* 文字背景颜色 */
tFontBtn.Space = 0; /* 文字间距,单位 = 像素 */
tFontMemo.FontCode = FC_ST_16; /* 字体代码 16点阵 */
tFontMemo.FrontColor = CL_WHITE; /* 字体颜色 */
tFontMemo.BackColor = CL_MASK; /* 文字背景颜色 */
tFontMemo.Space = 0; /* 文字间距,单位 = 像素 */
}
/* 从lua文件中解析按钮名字和程序语句 */
FindBtnNoteCmd();
lua_RunLuaProg(); /* 执行lua */
GetChipTypeFromLua(g_Lua); /* 从lua中解析芯片类型 */
fRefresh = 1;
while (g_MainStatus == MS_LUA_EXEC_FILE)
{
if (fRefresh) /* 刷新整个界面 */
{ {
case KEY_UP_S: /* S键 上 */ fRefresh = 0;
if (++cursor == BTN_NUM)
{
cursor = 0;
}
fRefresh = 1;
break;
case KEY_LONG_DOWN_S: /* S键 长按 */ {
if (cursor > 0) btn1.Left = BTN1_X;
{ btn1.Top = BTN1_Y;
cursor--; btn1.Height = BTN1_H;
} btn1.Width = BTN1_W;
else btn1.pCaption = tBtnList[0].Note;
{ btn1.Font = &tFontBtn;
cursor = BTN_NUM - 1; btn1.Focus = 0;
}
fRefresh = 1;
break;
case KEY_UP_C: /* C键 下 */ btn2.Left = BTN2_X;
if (cursor < 6) btn2.Top = BTN2_Y;
{ btn2.Height = BTN2_H;
if (strlen(tBtnList[cursor].Cmd) > 0) btn2.Width = BTN2_W;
btn2.pCaption = tBtnList[1].Note;
btn2.Font = &tFontBtn;
btn2.Focus = 0;
btn3.Left = BTN3_X;
btn3.Top = BTN3_Y;
btn3.Height = BTN3_H;
btn3.Width = BTN3_W;
btn3.pCaption = tBtnList[2].Note;
btn3.Font = &tFontBtn;
btn3.Focus = 0;
btn4.Left = BTN4_X;
btn4.Top = BTN4_Y;
btn4.Height = BTN4_H;
btn4.Width = BTN4_W;
btn4.pCaption = tBtnList[3].Note;
btn4.Font = &tFontBtn;
btn4.Focus = 0;
btn5.Left = BTN5_X;
btn5.Top = BTN5_Y;
btn5.Height = BTN5_H;
btn5.Width = BTN5_W;
btn5.pCaption = tBtnList[4].Note;
btn5.Font = &tFontBtn;
btn5.Focus = 0;
btn6.Left = BTN6_X;
btn6.Top = BTN6_Y;
btn6.Height = BTN6_H;
btn6.Width = BTN6_W;
btn6.pCaption = tBtnList[5].Note;
btn6.Font = &tFontBtn;
btn6.Focus = 0;
if (cursor == 0) btn1.Focus = 1;
else if (cursor == 1) btn2.Focus = 1;
else if (cursor == 2) btn3.Focus = 1;
else if (cursor == 3) btn4.Focus = 1;
else if (cursor == 4) btn5.Focus = 1;
else if (cursor == 5) btn6.Focus = 1;
LCD_SetEncode(ENCODE_GBK); /* 按钮文字是GBK编码 */
LCD_DrawButton(&btn1);
LCD_DrawButton(&btn2);
LCD_DrawButton(&btn3);
LCD_DrawButton(&btn4);
LCD_DrawButton(&btn5);
LCD_DrawButton(&btn6);
LCD_SetEncode(ENCODE_UTF8); /* 还原UTF8编码 */
}
}
bsp_Idle();
ucKeyCode = bsp_GetKey(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
if (ucKeyCode != KEY_NONE)
{
/* 有键按下 */
switch (ucKeyCode)
{
case KEY_UP_S: /* S键 上 */
if (++cursor == BTN_NUM)
{ {
LCD_MemoClear(&g_LuaMemo); cursor = 0;
DispHeaderStr("Lua正在运行...");
lua_do(tBtnList[cursor].Cmd);
DispHeaderStr("Lua小程序");
} }
} fRefresh = 1;
break; break;
case KEY_LONG_DOWN_C: /* C键长按 */ case KEY_LONG_DOWN_S: /* S键 长按 */
g_MainStatus = MS_LUA_SELECT_FILE; if (cursor > 0)
break; {
cursor--;
}
else
{
cursor = BTN_NUM - 1;
}
fRefresh = 1;
break;
default: case KEY_UP_C: /* C键 下 */
break; if (cursor < 6)
{
if (strlen(tBtnList[cursor].Cmd) > 0)
{
LCD_MemoClear(&g_LuaMemo);
DispHeaderStr("Lua正在运行...");
lua_do(tBtnList[cursor].Cmd);
DispHeaderStr("Lua小程序");
}
}
break;
case KEY_LONG_DOWN_C: /* C键长按 */
g_MainStatus = MS_LUA_SELECT_FILE;
break;
default:
break;
}
} }
} }
} }

View File

@ -183,7 +183,8 @@ void status_ProgWork(void)
uint16_t len; uint16_t len;
uint8_t line = 0; uint8_t line = 0;
lua_DownLoadFile(g_tProg.FilePath); /* 重新初始化lua环境并装载lua文件 */ lua_DownLoadFile(g_tProg.FilePath); /* 重新初始化lua环境并装载lua文件到内存不执行 */
lua_RunLuaProg(); /* 执行lua */
/* 从lua文件中获得注释字符串Note01 */ /* 从lua文件中获得注释字符串Note01 */
lua_getglobal(g_Lua, "Note01"); lua_getglobal(g_Lua, "Note01");

View File

@ -259,11 +259,10 @@ void status_MonitorUart(void)
LCD_DrawMemo(&g_RecMemo); LCD_DrawMemo(&g_RecMemo);
} }
LCD_SetEncode(ENCODE_GBK); LCD_SetEncode(ENCODE_GBK);
/* V1.35, 检查串口参数 */ /* V1.35, 检查串口参数 1.41 修正升级后串口缺省参数bug */
UartMonInitParam(g_MainStatus); UartMonInitParam(MODIFY_PARAM_UART_MON);
UartMonCheckParam(); /* 检查参数 */ UartMonCheckParam(); /* 检查参数 */
s_Pause = 0; s_Pause = 0;

View File

@ -83,7 +83,7 @@ void bsp_Init(void)
HC595_InitHard(); /* 配置示波器模块上的GPIO芯片 */ HC595_InitHard(); /* 配置示波器模块上的GPIO芯片 */
bsp_InitDAC1(); /* 配置DAC引脚 */ bsp_InitDAC1(); /* 配置DAC引脚 */
bsp_InitTVCC(); /* TVCC控制引脚 */ //bsp_InitTVCC(); /* TVCC控制引脚 -- 放到后面读完参数后设置 */
bsp_InitMCP4725(); /* 示波器偏置电压 */ bsp_InitMCP4725(); /* 示波器偏置电压 */

View File

@ -103,6 +103,7 @@ typedef struct
uint8_t Read; /* 缓冲区读指针1 */ uint8_t Read; /* 缓冲区读指针1 */
uint8_t Write; /* 缓冲区写指针 */ uint8_t Write; /* 缓冲区写指针 */
uint8_t Read2; /* 缓冲区读指针2 */ uint8_t Read2; /* 缓冲区读指针2 */
uint8_t Read3; /* 缓冲区读指针3 */
} KEY_FIFO_T; } KEY_FIFO_T;
/* 供外部调用的函数声明 */ /* 供外部调用的函数声明 */
@ -111,6 +112,7 @@ void bsp_KeyScan10ms(void);
void bsp_PutKey(uint8_t _KeyCode); void bsp_PutKey(uint8_t _KeyCode);
uint8_t bsp_GetKey(void); uint8_t bsp_GetKey(void);
uint8_t bsp_GetKey2(void); uint8_t bsp_GetKey2(void);
uint8_t bsp_GetKey3(void);
uint8_t bsp_GetKeyState(KEY_ID_E _ucKeyID); uint8_t bsp_GetKeyState(KEY_ID_E _ucKeyID);
void bsp_SetKeyParam(uint8_t _ucKeyID, uint16_t _LongTime, uint8_t _RepeatSpeed); void bsp_SetKeyParam(uint8_t _ucKeyID, uint16_t _LongTime, uint8_t _RepeatSpeed);
void bsp_ClearKey(void); void bsp_ClearKey(void);

View File

@ -46,7 +46,7 @@ void bsp_StopTimer(uint8_t _id);
uint8_t bsp_CheckTimer(uint8_t _id); uint8_t bsp_CheckTimer(uint8_t _id);
int32_t bsp_GetRunTime(void); int32_t bsp_GetRunTime(void);
int32_t bsp_CheckRunTime(int32_t _LastTime); int32_t bsp_CheckRunTime(int32_t _LastTime);
int32_t bsp_SubRunTime(int32_t _T0, int32_t _T1);
uint64_t bsp_GetRunTimeUs(void); uint64_t bsp_GetRunTimeUs(void);
int64_t bsp_CheckRunTimeUs(int64_t _LastTime); int64_t bsp_CheckRunTimeUs(int64_t _LastTime);

View File

@ -343,6 +343,35 @@ uint8_t bsp_GetKey2(void)
} }
} }
/*
*********************************************************************************************************
* : bsp_GetKey3
* : FIFO缓冲区读取一个键值
* :
* :
*********************************************************************************************************
*/
uint8_t bsp_GetKey3(void)
{
uint8_t ret;
if (s_tKey.Read3 == s_tKey.Write)
{
return KEY_NONE;
}
else
{
ret = s_tKey.Buf[s_tKey.Read3];
if (++s_tKey.Read3 >= KEY_FIFO_SIZE)
{
s_tKey.Read3 = 0;
}
return ret;
}
}
/* /*
********************************************************************************************************* *********************************************************************************************************
* : bsp_GetKeyState * : bsp_GetKeyState
@ -386,6 +415,7 @@ void bsp_ClearKey(void)
s_tKey.Write = 0; s_tKey.Write = 0;
s_tKey.Read = 0; s_tKey.Read = 0;
s_tKey.Read2 = 0; s_tKey.Read2 = 0;
s_tKey.Read3 = 0;
} }
/* /*

View File

@ -319,7 +319,7 @@ void bsp_InitTVCC(void)
/* 第1步打开GPIO时钟 */ /* 第1步打开GPIO时钟 */
ALL_TVCC_GPIO_CLK_ENABLE(); ALL_TVCC_GPIO_CLK_ENABLE();
TVCC_OFF(); //TVCC_OFF();
gpio_init.Mode = GPIO_MODE_OUTPUT_PP; /* 设置开漏输出 */ gpio_init.Mode = GPIO_MODE_OUTPUT_PP; /* 设置开漏输出 */
gpio_init.Pull = GPIO_NOPULL; /* 上下拉电阻不使能 */ gpio_init.Pull = GPIO_NOPULL; /* 上下拉电阻不使能 */
@ -327,7 +327,7 @@ void bsp_InitTVCC(void)
gpio_init.Pin = TVCC_EN_PIN; gpio_init.Pin = TVCC_EN_PIN;
HAL_GPIO_Init(TVCC_EN_GPIO, &gpio_init); HAL_GPIO_Init(TVCC_EN_GPIO, &gpio_init);
bsp_InitMCP4018(); /* 初始化数字电位器 */ //bsp_InitMCP4018(); /* 初始化数字电位器 */
} }
/* /*

View File

@ -311,6 +311,21 @@ static void ST7789_ConfigGPIO(void)
* : * :
********************************************************************************************************* *********************************************************************************************************
*/ */
void ST7789_DrawScreenHard(void)
{
ST7789_SetDispWin(0, 0, 240, 240);
bsp_InitSPI5ParamFast();
LCD_RS_1();
LCD_CS_0(); /* 在DMA传输完毕后设置1 */
wTransferState = 0;
HAL_SPI_Transmit_DMA(&hspi5, (uint8_t *)(0x30000000), 240 * 240);
while (wTransferState == 0){}
}
void ST7789_DrawScreen(void) void ST7789_DrawScreen(void)
{ {
#if LCD_DMA_CIRCULE_MODE == 1 #if LCD_DMA_CIRCULE_MODE == 1
@ -348,17 +363,7 @@ void ST7789_DrawScreen(void)
s_DispRefresh = 0; s_DispRefresh = 0;
ST7789_SetDispWin(0, 0, 240, 240); ST7789_DrawScreenHard();
bsp_InitSPI5ParamFast();
LCD_RS_1();
LCD_CS_0(); /* 在DMA传输完毕后设置1 */
wTransferState = 0;
HAL_SPI_Transmit_DMA(&hspi5, (uint8_t *)(0x30000000), 240 * 240);
while (wTransferState == 0){}
s_time1 = bsp_GetRunTime(); s_time1 = bsp_GetRunTime();

View File

@ -82,7 +82,7 @@ static SOFT_TMR s_tTmr[TMR_COUNT] = {0};
1ms 1ms
24.85 24.85
*/ */
__IO int32_t g_iRunTime = 0;
__IO uint64_t g_uiTimeHighWord = 0; __IO uint64_t g_uiTimeHighWord = 0;
static __IO uint8_t g_ucEnableSystickISR = 0; /* 等待变量初始化 */ static __IO uint8_t g_ucEnableSystickISR = 0; /* 等待变量初始化 */
@ -410,7 +410,7 @@ uint8_t bsp_CheckTimer(uint8_t _id)
/* /*
********************************************************************************************************* *********************************************************************************************************
* : bsp_GetRunTime * : bsp_GetRunTime
* : CPU运行时间1ms 24.85 * : CPU运行时间1ms 2147483647ms = 24.85
* *
* : * :
* : CPU运行时间1ms * : CPU运行时间1ms
@ -418,20 +418,13 @@ uint8_t bsp_CheckTimer(uint8_t _id)
*/ */
int32_t bsp_GetRunTime(void) int32_t bsp_GetRunTime(void)
{ {
// int32_t runtime; uint64_t tus;
int32_t ms;
// DISABLE_INT(); /* 关中断 */ tus = (bsp_GetRunTimeUs() / 1000) & 0x7FFFFFFF; /* 取低4字节 */
ms = tus;
// runtime = g_iRunTime; /* 这个变量在Systick中断中被改写因此需要关中断进行保护 */ return ms;
// ENABLE_INT(); /* 开中断 */
// return runtime;
/* 用硬件定时器计时后4294秒约 1.19小时 */
g_iRunTime = (TIM_HARD->CNT / 1000);
return g_iRunTime;
} }
/* /*
@ -444,12 +437,13 @@ int32_t bsp_GetRunTime(void)
*/ */
int32_t bsp_CheckRunTime(int32_t _LastTime) int32_t bsp_CheckRunTime(int32_t _LastTime)
{ {
uint64_t tus;
int32_t now_time; int32_t now_time;
int32_t time_diff; int32_t time_diff;
// DISABLE_INT(); /* 关中断 */ tus = bsp_GetRunTimeUs() / 1000;
now_time = TIM_HARD->CNT / 1000;
// ENABLE_INT(); /* 开中断 */ now_time = tus & 0x7FFFFFFF; /* 取低4字节 */
if (now_time >= _LastTime) if (now_time >= _LastTime)
{ {
@ -457,7 +451,31 @@ int32_t bsp_CheckRunTime(int32_t _LastTime)
} }
else else
{ {
time_diff = 0x7FFFFFFF - _LastTime + now_time; time_diff = 0x7FFFFFFF - _LastTime + now_time + 1;
}
return time_diff;
}
/*
*********************************************************************************************************
* : bsp_SubRunTime
* : 0 - 24.85.
* : _T0: 1 _T1: T0晚的时间
* : 1ms
*********************************************************************************************************
*/
int32_t bsp_SubRunTime(int32_t _T0, int32_t _T1)
{
int32_t time_diff;
if (_T1 >= _T0)
{
time_diff = _T1 - _T0;
}
else
{
time_diff = 0x7FFFFFFF - _T0 + _T1 + 1;
} }
return time_diff; return time_diff;
@ -466,7 +484,7 @@ int32_t bsp_CheckRunTime(int32_t _LastTime)
/* /*
********************************************************************************************************* *********************************************************************************************************
* : bsp_GetRunTimeUs * : bsp_GetRunTimeUs
* : CPU运行时间1ms 24.85 * : CPU运行时间1us 292471
* *
* : * :
* : CPU运行时间1us. * : CPU运行时间1us.
@ -474,14 +492,18 @@ int32_t bsp_CheckRunTime(int32_t _LastTime)
*/ */
uint64_t bsp_GetRunTimeUs(void) uint64_t bsp_GetRunTimeUs(void)
{ {
return TIM_HARD->CNT + g_uiTimeHighWord;; /*
7FFF FFFF FFFF FFFF = 9223372036854775807 us = 9223372036854
= 2562047788 = 106751991 = 292471
*/
return TIM_HARD->CNT + (g_uiTimeHighWord * 0x100000000);
} }
/* /*
********************************************************************************************************* *********************************************************************************************************
* : bsp_CheckRunTimeUs * : bsp_CheckRunTimeUs
* : * :
* : _LastTime * : _LastTime
* : 1us * : 1us
********************************************************************************************************* *********************************************************************************************************
*/ */
@ -490,7 +512,7 @@ int64_t bsp_CheckRunTimeUs(int64_t _LastTime)
int64_t now_time; int64_t now_time;
int64_t time_diff; int64_t time_diff;
now_time = TIM_HARD->CNT + g_uiTimeHighWord; now_time = bsp_GetRunTimeUs();
if (now_time >= _LastTime) if (now_time >= _LastTime)
{ {
@ -498,8 +520,7 @@ int64_t bsp_CheckRunTimeUs(int64_t _LastTime)
} }
else else
{ {
/* Windwos计算机将 0xFFFFFFFFFFFFFFFF 做 -1处理 */ time_diff = now_time - _LastTime; /* 负数 */
time_diff = 0xFFFFFFFFFFFFFFFE - _LastTime + now_time;
} }
return time_diff; return time_diff;

View File

@ -146,6 +146,7 @@ void lua_DeInit(void)
// 每行执行的钩子函数用于终止lua程序 // 每行执行的钩子函数用于终止lua程序
extern MEMO_T g_LuaMemo; extern MEMO_T g_LuaMemo;
extern void PG_PrintText(char *_str); extern void PG_PrintText(char *_str);
extern uint8_t g_LuaSubStatus;
void LuaYeildHook(lua_State *_L, lua_Debug *ar) void LuaYeildHook(lua_State *_L, lua_Debug *ar)
{ {
if (s_lua_quit == 1) if (s_lua_quit == 1)
@ -160,11 +161,14 @@ void LuaYeildHook(lua_State *_L, lua_Debug *ar)
uint8_t ucKeyCode; uint8_t ucKeyCode;
/* 显示Lua程序print的字符串. 内容在bsp_uart_fif文件 fputc 函数填充的 */ /* 显示Lua程序print的字符串. 内容在bsp_uart_fif文件 fputc 函数填充的 */
if (g_LuaMemo.Refresh == 1) if (g_LuaSubStatus == 0) /* 非GUI界面才执行如下语句 */
{ {
LCD_SetEncode(ENCODE_GBK); if (g_LuaMemo.Refresh == 1)
LCD_DrawMemo(&g_LuaMemo); {
LCD_SetEncode(ENCODE_UTF8); LCD_SetEncode(ENCODE_GBK);
LCD_DrawMemo(&g_LuaMemo);
LCD_SetEncode(ENCODE_UTF8);
}
} }
ucKeyCode = bsp_GetKey2(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */ ucKeyCode = bsp_GetKey2(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
@ -173,7 +177,8 @@ void LuaYeildHook(lua_State *_L, lua_Debug *ar)
/* 有键按下 */ /* 有键按下 */
switch (ucKeyCode) switch (ucKeyCode)
{ {
case KEY_LONG_DOWN_C: /* C键长按 - 终止Lua */ case KEY_LONG_DOWN_C: /* C键长按 - 终止Lua */
while(bsp_GetKey()); /* 清空lua运行期间的按键消息 */
lua_yield(_L, 0); lua_yield(_L, 0);
break; break;
@ -196,6 +201,8 @@ void LuaYeildHook(lua_State *_L, lua_Debug *ar)
case KEY_LONG_DOWN_C: /* C键长按 - 终止Lua */ case KEY_LONG_DOWN_C: /* C键长按 - 终止Lua */
PG_PrintText("用户终止运行"); PG_PrintText("用户终止运行");
g_tProg.AutoStart = 0; g_tProg.AutoStart = 0;
//while(bsp_GetKey()); /* 清空lua运行期间的按键消息 */
lua_yield(_L, 0); lua_yield(_L, 0);
break; break;
@ -261,7 +268,10 @@ void lua_DownLoadFile(char *_path)
{ {
s_lua_prog_buf[s_lua_prog_len] = 0; /* 文件末尾补0 */ s_lua_prog_buf[s_lua_prog_len] = 0; /* 文件末尾补0 */
} }
}
void lua_RunLuaProg(void)
{
lua_do(s_lua_prog_buf); lua_do(s_lua_prog_buf);
} }
@ -849,7 +859,7 @@ static int get_key(lua_State* L)
{ {
uint8_t key; uint8_t key;
key = bsp_GetKey(); key = bsp_GetKey3();
lua_pushnumber(L, key); lua_pushnumber(L, key);
return 1; return 1;
} }
@ -1106,6 +1116,7 @@ static int lua_WriteDev(lua_State* L)
* : * :
********************************************************************************************************* *********************************************************************************************************
*/ */
extern void lua_lcd_RegisterFun(void);
static void lua_RegisterFunc(void) static void lua_RegisterFunc(void)
{ {
//将指定的函数注册为Lua的全局函数变量其中第一个字符串参数为Lua代码 //将指定的函数注册为Lua的全局函数变量其中第一个字符串参数为Lua代码
@ -1149,6 +1160,7 @@ static void lua_RegisterFunc(void)
lua_reg_RegisterFun(); lua_reg_RegisterFun();
lua_extio_RegisterFun(); lua_extio_RegisterFun();
lua_uart_RegisterFun(); lua_uart_RegisterFun();
lua_lcd_RegisterFun();
} }
/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/

View File

@ -50,6 +50,7 @@ void lua_Run(void);
int lua_CheckGlobal(const char *name); int lua_CheckGlobal(const char *name);
void lua_do(char *buf); void lua_do(char *buf);
void lua_DownLoadFile(char *_path); void lua_DownLoadFile(char *_path);
void lua_RunLuaProg(void);
uint32_t lua_GetVarUint32(const char *_VarName, uint32_t _Default); uint32_t lua_GetVarUint32(const char *_VarName, uint32_t _Default);

719
User/lua/if/lua_if_disp.c Normal file
View File

@ -0,0 +1,719 @@
/*
*********************************************************************************************************
*
* : lua
* : lua_if_disp.c
* : V1.0
* :
* :
*
* v1.0 2020-11-29 armfly
*
* Copyright (C), 2019-2030, www.armfly.com
*
*********************************************************************************************************
*/
#include "lauxlib.h"
#include "lualib.h"
#include "time.h"
#include "lua_if.h"
#include "bsp.h"
#include "param.h"
#include "modbus_reg_addr.h"
#include "modbus_register.h"
#include "disp_lib.h"
/*
API函数
lcd_clr(color) --
lcd_disp_str(x, y, str, fontzize, front_color, back_color) --
lcd_disp_str(x, y, str, fontzize, front_color, back_color, width, align) --
lcd_fill_rect(x, y, h, w, color) --
lcd_draw_rect(x, y, h, w, color)
lcd_draw_circle(x, y, r, color)
lcd_draw_line(x1, y1, x2, y2, color)
lcd_draw_points(xArray, yArray, size, color)
lcd_disp_label(x, y, h, w, color, str, fontzize, front_color, back_color)
void DispLabelRound(uint16_t _usX, uint16_t _usY, uint16_t _usHeight, uint16_t _usWidth,
uint16_t _usColor, char *_pStr, FONT_T *_tFont)
void LCD_ClrScr(uint16_t _usColor);
void LCD_DispStr(uint16_t _usX, uint16_t _usY, char *_ptr, FONT_T *_tFont);
void LCD_PutPixel(uint16_t _usX, uint16_t _usY, uint16_t _usColor);
uint16_t LCD_GetPixel(uint16_t _usX, uint16_t _usY);
void LCD_DrawLine(uint16_t _usX1, uint16_t _usY1, uint16_t _usX2, uint16_t _usY2, uint16_t _usColor);
void LCD_DrawPoints(uint16_t *x, uint16_t *y, uint16_t _usSize, uint16_t _usColor);
void LCD_DrawRect(uint16_t _usX, uint16_t _usY, uint16_t _usHeight, uint16_t _usWidth, uint16_t _usColor);
void LCD_DrawCircle(uint16_t _usX, uint16_t _usY, uint16_t _usRadius, uint16_t _usColor);
void LCD_DrawBMP(uint16_t _usX, uint16_t _usY, uint16_t _usHeight, uint16_t _usWidth, uint16_t *_ptr);
void LCD_SetBackLight(uint8_t _bright);
uint8_t LCD_GetBackLight(void);
void LCD_Fill_Rect(uint16_t _usX, uint16_t _usY, uint16_t _usHeight, uint16_t _usWidth, uint16_t _usColor);
*/
static int lua_RGB565(lua_State* L);
static int lua_LcdRefresh(lua_State* L);
static int lua_LcdClr(lua_State* L);
static int lua_DispStr(lua_State* L);
static int lua_FillRect(lua_State* L);
static int lua_DrawRect(lua_State* L);
static int lua_DrawCircle(lua_State* L);
static int lua_DrawLine(lua_State* L);
static int lua_DrawPoints(lua_State* L);
static int lua_DrawLabel(lua_State* L);
/*
*********************************************************************************************************
* : lua_adc_RegisterFun
* : lua C语言接口函数
* :
* :
*********************************************************************************************************
*/
void lua_lcd_RegisterFun(void)
{
//将指定的函数注册为Lua的全局函数变量其中第一个字符串参数为Lua代码
//在调用C函数时使用的全局函数名第二个参数为实际C函数的指针。
lua_register(g_Lua, "RGB565", lua_RGB565);
lua_register(g_Lua, "lcd_refresh", lua_LcdRefresh);
lua_register(g_Lua, "lcd_clr", lua_LcdClr);
lua_register(g_Lua, "lcd_disp_str", lua_DispStr);
lua_register(g_Lua, "lcd_fill_rect", lua_FillRect);
lua_register(g_Lua, "lcd_draw_rect", lua_DrawRect);
lua_register(g_Lua, "lcd_draw_circle", lua_DrawCircle);
lua_register(g_Lua, "lcd_draw_line", lua_DrawLine);
lua_register(g_Lua, "lcd_draw_points", lua_DrawPoints);
lua_register(g_Lua, "lcd_disp_label", lua_DrawLabel);
}
/*
*********************************************************************************************************
* : lua_LcdRefresh
* : lcd_refresh()
* :
* :
*********************************************************************************************************
*/
extern void ST7789_DrawScreenHard(void);
static int lua_LcdRefresh(lua_State* L)
{
ST7789_DrawScreenHard();
return 0;
}
/*
*********************************************************************************************************
* : lua_RGB565
* : RGB565(255,255,255) 565
* : R : G : B (0-255)
* :
*********************************************************************************************************
*/
static int lua_RGB565(lua_State* L)
{
uint16_t r,g,b;
uint16_t color = 0;
if (lua_type(L, 1) == LUA_TNUMBER)
{
r = luaL_checknumber(L, 1);
if (lua_type(L, 2) == LUA_TNUMBER)
{
g = luaL_checknumber(L, 2);
if (lua_type(L, 3) == LUA_TNUMBER)
{
b = luaL_checknumber(L, 3);
color = RGB(r,g,b);
}
}
}
lua_pushnumber(L, color);
return 1;
}
/*
*********************************************************************************************************
* : lua_LcdClr
* : lcd_clr(color) --
* : color : RGB565格式
* :
*********************************************************************************************************
*/
static int lua_LcdClr(lua_State* L)
{
uint16_t color;
if (lua_type(L, 1) == LUA_TNUMBER) /* 第1个参数 */
{
color = luaL_checknumber(L, 1);
}
LCD_ClrScr(color);
return 0;
}
/*
*********************************************************************************************************
* : lua_DispStr
* : lcd_disp_str(x, y, str, fontzize, front_color, back_color, width, align) --
* : ...
* :
*********************************************************************************************************
*/
static int lua_DispStr(lua_State* L)
{
uint16_t x, y;
const char *str;
size_t len;
uint8_t fontzize;
uint16_t front_color, back_color;
uint16_t width;
uint8_t align;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TNUMBER)
{
x = luaL_checknumber(L, 1);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TNUMBER)
{
y = luaL_checknumber(L, 2);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TSTRING)
{
str = luaL_checklstring(L, 3, &len);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
fontzize = luaL_checknumber(L, 4);
}
else
{
return 0;
}
/* 第5个参数 */
if (lua_type(L, 5) == LUA_TNUMBER)
{
front_color = luaL_checknumber(L, 5);
}
else
{
return 0;
}
/* 第6个参数 */
if (lua_type(L, 6) == LUA_TNUMBER)
{
back_color = luaL_checknumber(L, 6);
}
else
{
return 0;
}
/* 第7个参数 */
if (lua_type(L, 7) == LUA_TNUMBER)
{
width = luaL_checknumber(L, 7);
}
else
{
return 0;
}
/* 第8个参数 */
if (lua_type(L, 8) == LUA_TNUMBER)
{
align = luaL_checknumber(L, 8);
}
else
{
return 0;
}
{
FONT_T tFont;
if (fontzize == 12) tFont.FontCode = FC_ST_12;
else if (fontzize == 16) tFont.FontCode = FC_ST_16;
else if (fontzize == 24) tFont.FontCode = FC_ST_24;
else if (fontzize == 32) tFont.FontCode = FC_ST_32;
else {
return 0;
}
tFont.FrontColor = front_color; /* 字体颜色 */
tFont.BackColor = back_color; /* 文字背景颜色 */
tFont.Space = 0;
LCD_SetEncode(ENCODE_GBK);
LCD_DispStrEx(x, y, (char *)str, &tFont, width, align);
LCD_SetEncode(ENCODE_UTF8);
}
return 0;
}
/*
*********************************************************************************************************
* : lua_FillRect
* : lcd_fill_rect(x, y, h, w, color) --
* : ...
* :
*********************************************************************************************************
*/
static int lua_FillRect(lua_State* L)
{
uint16_t x, y, h, w;
uint16_t color;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TNUMBER)
{
x = luaL_checknumber(L, 1);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TNUMBER)
{
y = luaL_checknumber(L, 2);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TNUMBER)
{
h = luaL_checknumber(L, 3);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
w = luaL_checknumber(L, 4);
}
else
{
return 0;
}
/* 第5个参数 */
if (lua_type(L, 5) == LUA_TNUMBER)
{
color = luaL_checknumber(L, 5);
}
else
{
return 0;
}
LCD_Fill_Rect(x, y, h, w, color);
return 0;
}
/*
*********************************************************************************************************
* : lua_DrawRect
* : lcd_draw_rect(x, y, h, w, color) --
* : ...
* :
*********************************************************************************************************
*/
static int lua_DrawRect(lua_State* L)
{
uint16_t x, y, h, w;
uint16_t color;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TNUMBER)
{
x = luaL_checknumber(L, 1);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TNUMBER)
{
y = luaL_checknumber(L, 2);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TNUMBER)
{
h = luaL_checknumber(L, 3);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
w = luaL_checknumber(L, 4);
}
else
{
return 0;
}
/* 第5个参数 */
if (lua_type(L, 5) == LUA_TNUMBER)
{
color = luaL_checknumber(L, 5);
}
else
{
return 0;
}
LCD_DrawRect(x, y, h, w, color);
return 0;
}
/*
*********************************************************************************************************
* : lua_DrawCircle
* : lcd_fill_circle(x, y, r, color)
* : ...
* :
*********************************************************************************************************
*/
static int lua_DrawCircle(lua_State* L)
{
uint16_t x, y, r;
uint16_t color;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TNUMBER)
{
x = luaL_checknumber(L, 1);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TNUMBER)
{
y = luaL_checknumber(L, 2);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TNUMBER)
{
r = luaL_checknumber(L, 3);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
color = luaL_checknumber(L, 4);
}
else
{
return 0;
}
LCD_DrawCircle(x, y, r, color);
return 0;
}
/*
*********************************************************************************************************
* : lua_DrawLine
* : lcd_draw_line(x1, y1, x2, y2, color)
* : ...
* :
*********************************************************************************************************
*/
static int lua_DrawLine(lua_State* L)
{
uint16_t x1, y1, x2, y2;
uint16_t color;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TNUMBER)
{
x1 = luaL_checknumber(L, 1);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TNUMBER)
{
y1 = luaL_checknumber(L, 2);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TNUMBER)
{
x2 = luaL_checknumber(L, 3);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
y2 = luaL_checknumber(L, 4);
}
else
{
return 0;
}
/* 第5个参数 */
if (lua_type(L, 5) == LUA_TNUMBER)
{
color = luaL_checknumber(L, 4);
}
else
{
return 0;
}
LCD_DrawLine(x1, y1, x2, y2, color);
return 0;
}
/*
*********************************************************************************************************
* : lua_DrawCircle
* : lcd_draw_line(x, y, r, color)
* : ...
* :
*********************************************************************************************************
*/
static int lua_DrawPoints(lua_State* L)
{
const char *pX;
const char *pY;
size_t len;
uint16_t count;
uint16_t color;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TSTRING)
{
pX = luaL_checklstring(L, 1, &len);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TSTRING)
{
pY = luaL_checklstring(L, 2, &len);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TNUMBER)
{
count = luaL_checknumber(L, 3);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
color = luaL_checknumber(L, 4);
}
else
{
return 0;
}
{
uint16_t i;
uint16_t x1, y1;
uint16_t x2, y2;
for (i = 0; i < count - 1; i++)
{
x1 = (pX[0] << 8) + pX[1];
x2 = (pX[2] << 8) + pX[3];
pX += 2;
y1 = (pY[0] << 8) + pY[1];
y2 = (pY[2] << 8) + pY[3];
pY += 2;
LCD_DrawLine(x1, y1, x2, y2, color);
}
}
return 0;
}
/*
*********************************************************************************************************
* : lua_DrawLabel
* : lcd_disp_label(x, y, h, w, color, str, fontzize, front_color, back_color)
* : ...
* :
*********************************************************************************************************
*/
static int lua_DrawLabel(lua_State* L)
{
uint16_t x, y, h, w;
uint16_t color;
const char *str;
size_t len;
uint16_t fontzize, front_color, back_color;
/* 第1个参数 */
if (lua_type(L, 1) == LUA_TNUMBER)
{
x = luaL_checknumber(L, 1);
}
else
{
return 0;
}
/* 第2个参数 */
if (lua_type(L, 2) == LUA_TNUMBER)
{
y = luaL_checknumber(L, 2);
}
else
{
return 0;
}
/* 第3个参数 */
if (lua_type(L, 3) == LUA_TNUMBER)
{
h = luaL_checknumber(L, 3);
}
else
{
return 0;
}
/* 第4个参数 */
if (lua_type(L, 4) == LUA_TNUMBER)
{
w = luaL_checknumber(L, 4);
}
else
{
return 0;
}
/* 第5个参数 */
if (lua_type(L, 5) == LUA_TNUMBER)
{
color = luaL_checknumber(L, 5);
}
else
{
return 0;
}
/* 第6个参数 */
if (lua_type(L, 6) == LUA_TSTRING)
{
str = luaL_checklstring(L, 6, &len);
}
else
{
return 0;
}
{
FONT_T tFont;
if (fontzize == 12) tFont.FontCode = FC_ST_12;
else if (fontzize == 16) tFont.FontCode = FC_ST_16;
else if (fontzize == 24) tFont.FontCode = FC_ST_24;
else if (fontzize == 32) tFont.FontCode = FC_ST_32;
else {
return 0;
}
tFont.FrontColor = front_color; /* 字体颜色 */
tFont.BackColor = back_color; /* 文字背景颜色 */
tFont.Space = 0;
DispLabelRound(x, y, h, w, color, (char *)str, &tFont);
}
return 0;
}
/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/